2017-02-23 11 views
0

PHPからFTPにファイルをアップロードしようとしています。実際には動作しますが、複数のファイルでは動作しません。これは私が持っているコードです。FTP muliple files upload 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; 
    } 

アップロードされたファイルに関する情報の下で、1行に「ftp errorftp success」が返されます。アップロードした最初のファイルのみがFTPにアップロードされますが、すべてアップロードされるわけではありません。私は理由を理解できないようだ。私はここで何が欠けていますか?助けをお待ちしています。

答えて

2

ftp errorのエコーが返される理由は、$upload変数は、最初のファイルがアップロードされたときに真の値を持ちます。コードの最後にexitを置いて、スクリプトがループを続けるのを止めます。 exit;を削除してからお試しください。 も参照してください。 Here
また、ループ内でftp接続を開いたり閉じたりしないでください。ループが完了したら、すべてのファイルをftpにアップロードして閉じるようにしてください。

+0

恐ろしい先端!私はあなたが今ここで言っていることを試しました、そして今、それはすべて完璧に動作します。ヒントをありがとう! – zorensen