當同一腳本從其他地方下載下傳所需檔案時,是否可以使用PHP腳本将檔案上傳到FTP伺服器? 是以,在下載下傳腳本時,它應該實時上傳檔案。
從理論上講,它像蛋糕一樣容易。首先,請在此處檢視FTP功能:http://www.php.net/manual/zh/function.ftp-fput.php。然後,我們使用FOPEN包裝器(http://www.php.net/manual/en/wrappers.php)打開要讀取的檔案,并将其發送過來。
要修改php.net示例:
// open some file for reading
$file = 'somefile.txt';
$fp = fopen('ftp://user:[email protected]/' . $file, 'r');
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// try to upload $file
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
echo"Successfully uploaded $file
";
} else {
echo"There was a problem while uploading $file
";
}
// close the connection and the file handler
ftp_close($conn_id);
fclose($fp);
?>
哦,有時候您可能希望不阻塞:http://www.php.net/manual/en/function.ftp-nb-fput.php
PHP的内置FTP擴充可以異步方式上載和下載下傳檔案。
但是,聽起來您正在談論使用此方法在兩個不同的FTP連接配接之間傳輸檔案,而無需先下載下傳整個檔案。我不确定這些功能是否支援。實際上,我可能會以其他方式期望-可能是在下載下傳進行時,上載可能到達檔案的末尾,而隻是假設它快要結束并完成了。
在上傳手冊連結上有一些評論,建議您可以誘使某些伺服器使用被動模式執行直接連接配接,但是我會花點時間。
使用FTP流包裝器可能會有些運氣。您可以打開兩個FTP包裝器作為檔案句柄,然後使用fread從一側檢索特定大小的塊,然後使用fwrite将它們寫入另一側。請記住,您需要循環執行此操作,是以不能像FTP擴充程式的方法那樣在背景執行此操作。它也可能很慢。
PHP可以處理ftp協定,這是php手冊中的示例。
PHP支援程序派生,您可以檢查pnctl。