ftp_put загружает пустой файл - PullRequest
4 голосов
/ 20 июля 2010

Я пытаюсь загрузить файл через ftp_put на сервер Windows.

мой код выглядит следующим образом:

    $date           = date('ymd');
    $file_name      = $date.'.csv';
    $file_location  = 'D:/inetpub/wwwroot/website.com/html/assets/'.$file_name;

//set up basic connection
$conn_id = ftp_connect(FTP_HOST, FTP_PORT);

// login with username and password
$login_result = ftp_login($conn_id, FTP_USER, FTP_PASS);

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!"; 
    exit;
}  else { 
    echo "Connected to FTP Server";
}

$upload = ftp_put($conn_id, $file_name, $file_location, FTP_ASCII);

// check upload status
if (!$upload) { 
    echo "FTP upload has failed!"; 
} else { 
    echo "File Uploaded";
}

// close the FTP stream 
ftp_close($conn_id); 

Если я загружаю файл вручную с помощью filezilla, он работаетв совершенстве.Если я использую код выше, он создает пустой файл.

Ответы [ 5 ]

12 голосов
/ 20 июля 2010

Попробуйте передать файл с включенным пассивным режимом:

Пассивный режим

7 голосов
/ 20 июля 2010

попробуйте использовать FTP_BINARY вместо FTP_ASCII следующим образом.

$upload = ftp_put($conn_id, $file_name, $file_location, FTP_BINARY);

PHP ftp может быть глючным, но я обнаружил, что он работает в режиме двоичной передачи.

1 голос
/ 08 мая 2017

включить пассивный режим

  ftp_pasv($conn_id, true);
1 голос
/ 21 июля 2010

Оказывается, UKFast блокировал соединение и передачу.(Они также требуют, чтобы он был только в Активном режиме).

Теперь они разблокировали его, он работает отлично.(До того как показалось, что время просто истекло)

0 голосов
/ 11 января 2019

спасибо "Хан Мухаммед" за ваш ответ, когда я добавил эту часть:

ftp_pasv ($ conn_id, true);

файл был загружен отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...