是否有可能使用PHP腳本將文件上傳到FTP服務器,而同一腳本正在從其他地方下載意向文件?所以在腳本下載時它應該實時上傳文件。使用PHP通過FTP上傳實時文件
1
A
回答
1
在理論上就像蛋糕一樣簡單。首先,請參閱FTP功能:http://www.php.net/manual/en/function.ftp-fput.php。然後我們使用FOPEN包裝(http://www.php.net/manual/en/wrappers.php)打開我們想要讀取的文件,併發送它。
要修改php.net例如:
<?php
// 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\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection and the file handler
ftp_close($conn_id);
fclose($fp);
?>
哦,你可能想有時非阻塞:http://www.php.net/manual/en/function.ftp-nb-fput.php
0
PHP可以處理ftp協議,這裏是the php manual的一個例子。
PHP支持進程分叉,你可以檢查pnctl。
0
PHP的內置FTP擴展可以upload和download文件以異步的方式。
但是聽起來好像你正在討論使用這種方法在兩個不同的FTP連接之間傳輸文件,而不是首先下載整個文件。我不確定這些功能是否支持。事實上,我希望否則 - 在下載過程中上傳可能會到達文件的末尾,並且簡單地假設它已經達到最後並完成自己。
在上傳手冊鏈接上有一些建議,您可以欺騙一些服務器使用被動模式執行直接連接,但我會用一粒鹽。
使用FTP stream wrappers可能會帶來一些好運。您可以打開兩個FTP包裝文件作爲文件句柄,然後使用fread
從一側檢索特定大小的塊,並將fwrite
寫入另一側。請記住,您需要在循環中執行此操作,因此無法在後臺完成,例如FTP擴展的方法。它也可能很慢。
相關問題
- 1. 使用PHP通過FTP上傳文件
- 2. 使用PHP上傳一個文件夾通過FTP使用PHP
- 3. 通過FTP在php上傳文件
- 4. 通過ftp上傳文件
- 5. 上傳文本文件到谷歌上傳通過PHP FTP PUT
- 6. 如何通過FTP使用PHP上傳文件的URL?
- 7. 如何使用ftp連接通過PHP cURL上傳文件?
- 8. 使用php,JS&ajax通過ftp上傳文件
- 9. 使用PHP通過基於Web的ftp上傳文件
- 10. 使用cmd通過ftp傳輸文件
- 11. 通過php使用ftp細節上傳php文件正在執行php,而不是上傳原始php文件
- 12. 使用php下載文件通過ftp
- 13. 使用php上傳FTP文件
- 14. 通過FTP上傳php文件,所有linebreaks和CRs上傳時丟失
- 15. 上傳文件到通過FTP
- 16. FTP上傳文件通過SSL C#
- 17. Bash腳本通過FTP上傳文件
- 18. 通過FTP上傳文件片段
- 19. 如何通過FTP上傳文件夾?
- 20. Java - 通過FTP上傳文件夾?
- 21. CURL通過FTP上傳空白文件
- 22. Compact Framework文件通過FTP上傳
- 23. 無法使用FTP下載文件,通過PHP上傳文件後
- 24. 使用PHP通過ajax上傳文件
- 25. FTP多文件上傳PHP
- 26. 使用ftp上傳文件
- 27. 通過php上傳文件時出錯
- 28. 通過PHP上傳文件
- 29. php通過ftp大量上傳
- 30. 通過PHP上傳FTP表格