2017-02-23 70 views
0

Я пытаюсь загрузить файлы на FTP с PHP. Это действительно работает, но не с несколькими файлами. Это код, который у меня есть;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» на одной строке под информацией о загруженных файлах. Только первый файл, который я загрузил, будет загружен на FTP, но не все из них. Я не могу понять, почему. Что мне здесь не хватает? Цените любую помощь.

ответ

2

Причина, по которой вы получаете эхо ftp error, является переменной $upload, которая будет иметь истинное значение при загрузке первого файла. а затем у вас есть выход в конце кода, который остановит сценарий для продолжения цикла. Удалите exit; и попробуйте. тоже смотрите здесь. Here
Также не открывайте и не закрывайте соединение ftp внутри цикла, не закрывайте его, когда цикл завершится, и он загрузит все файлы в ftp.

+0

Удивительный отзыв! Я пробовал то, что вы сейчас здесь говорите, и теперь все работает отлично. Спасибо за совет! – zorensen

Смежные вопросы