天天看點

php ftp 檔案上傳進度,使用PHP通過FTP實時上傳檔案

當同一腳本從其他地方下載下傳所需檔案時,是否可以使用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。