2017-02-23 146 views
0

我想从PHP上传文件到FTP。它实际上工作,但没有多个文件。这是我的代码;FTP多文件上传PHP

 for($i = 0; $i < count($data['data']['metas']); $i++) 
    { 
     echo "<li>".$data['data']['metas'][$i]["name"]."</li>"; 
     echo "<li>".$data['data']['metas'][$i]["file"]."</li>"; 
     echo "<li>".$data['data']['metas'][$i]["size2"]."</li>"; 
    } 

这实际上有效。它会返回我上传文件的数据,就像这样;

- FILENAME01.EXT 
- upload/FILENAME01.EXT 
- 198.96 KB 
- FILENAME02.EXT 
- upload/FILENAME01.EXT 
- 93.77 KB 
- FILENAME03.EXT 
- upload/FILENAME03.EXT 
- 94.59 KB 

到目前为止,这么好。现在我将上传添加到FTP代码,这是我的(直接在上面的代码下);

for($i = 0; $i < count($data['data']['metas']); $i++) 
    { 
    $host = "ftp.domain.com"; 
    $username = "myuser"; 
    $password = "mupass"; 
    $local_file = $data['data']['metas'][$i]["file"]; 
    $remote_file = $data['data']['metas'][$i]["name"]; 

    $con = ftp_connect($host, 21) or die("Cant connect"); 
    $log = ftp_login($con, $username, $password) or die("Wrong credentials"); 

    ftp_pasv($con, true); 

    $upload = ftp_put($con, $remote_file, $local_file, FTP_BINARY); 
    if($upload) echo 'ftp error'; 
    ftp_close($con); 

    echo 'ftp success'; 
    exit; 
    } 

这将在我上传的文件信息下的一行中返回“ftp errorftp success”。只有我上传的第一个文件将被上传到FTP,而不是全部。我似乎无法弄清楚为什么。我在这里错过了什么?感谢任何帮助。

回答

2

您收到ftp error的回声的原因是$upload变量在第一个文件上传时将具有真值。然后在代码结束时退出,这将停止脚本继续循环。请删除exit;并尝试。 也看到这个参考。 Here
另外,请不要打开和关闭循环内的ftp连接,在循环完成时将其关闭,并将所有文件上传到ftp。

+0

太棒了!我已经尝试过你现在在这里说的,现在它完美地工作。谢谢你的提示! – zorensen