我正在尝试通过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);
Run Code Online (Sandbox Code Playgroud)
如果我使用filezilla手动上传文件,它可以很好地工作.如果我使用上面的代码,它会创建一个空文件.
尝试使用FTP_BINARY而不是像这样的FTP_ASCII.
$upload = ftp_put($conn_id, $file_name, $file_location, FTP_BINARY);
Run Code Online (Sandbox Code Playgroud)
PHP ftp可能有问题,但我发现它几乎可以在二进制传输模式下工作.