ftp_put上传一个空文件

时间:2010-07-20 14:16:07

标签: php ftp

我正在尝试通过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手动上传文件,它可以很好地工作。如果我使用上面的代码,它会创建一个空文件。

6 个答案:

答案 0 :(得分:12)

尝试在启用被动模式的情况下传输文件:

Passive Mode

答案 1 :(得分:7)

尝试使用FTP_BINARY代替FTP_ASCII。

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

PHP ftp可能有问题,但我发现它几乎可以在二进制传输模式下工作。

答案 2 :(得分:1)

事实证明,UKFast阻止了连接和转移。 (它们还要求它仅为活动模式。)

现在他们已经解锁了它,它运作得很好。 (在它看起来只是暂停之前)

答案 3 :(得分:1)

打开被动模式

  ftp_pasv($conn_id, true);

答案 4 :(得分:0)

当我添加此部分时,感谢“汗·穆罕默德”的回答:

  

ftp_pasv($ conn_id,true);

文件完美上传。

答案 5 :(得分:0)

打开被动模式对我来说很成功。

ftp_pasv($conn_id, true);