簡體   English   中英

PHP上傳本地文件到FTP服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM