[英]php upload local file to ftp server
我知道ftp_put方法將文件從本地服務器計算機上載到ftp服務器,但是當我嘗試執行這樣的簡單腳本時,在使用該文件時遇到了問題:
<?php
// connect and login to FTP server
$ftp_server = "ftp.example.com";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$file = "localfile.txt";
// upload file
if (ftp_put($ftp_conn, "serverfile.txt", $file, FTP_ASCII))
{
echo "Successfully uploaded $file.";
}
else
{
echo "Error uploading $file.";
}
// close connection
ftp_close($ftp_conn);
?>
該操作成功完成,只是上傳到我的ftp服務器的文件始終為零字節!
我也嘗試啟用被動模式,但它仍然上傳一個空文件。
嘗試啟用track_errors
並訪問$php_errormsg
ini_set('track_errors', 1);
// put operation
// if error
var_dump($php_errormsg);
我遇到過同樣的問題。 當我將“ FTP_ASCII”更改為“ FTP_BINARY”時,它解決了我的問題,並按預期上傳了文件。
我也遇到過這個問題。 有點晚了,但以為我會發布我的解決方案:
$file_name = "localfile.txt";
從現有文件中獲取內容
$content = file_get_contents('http://www.somewhere.com/'.$file_name);
...或制作臨時文件內容
$content = "This is content";
上傳文件
// connect
$conn_id = ftp_connect($host);
$login = ftp_login($conn_id, $username, $password);
ftp_pasv($conn_id, true);
// create
$tmp = fopen(tempnam(sys_get_temp_dir(), $file), "w+");
fwrite($tmp, $content);
rewind($tmp);
// upload
$upload = ftp_fput($conn_id, "serverfile.txt", $tmp, FTP_ASCII);
// close
ftp_close($conn_id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.