我已經看到圍繞這個主題的其他線程,但他們沒有幫助太多。PHP:上傳和下載大文件的最佳方法
我有一個簡單的要求。 我需要創建一個簡單的應用程序,允許用戶從服務器上傳和下載大型文件(400 - 1500 MB)。 每個用戶都將有他的登錄信息,並且需要安全地上傳和下載大文件。
在PHP中實現這一點的最佳方法是什麼? 我應該注意的任何缺陷?
感謝, 阿米特
我已經看到圍繞這個主題的其他線程,但他們沒有幫助太多。PHP:上傳和下載大文件的最佳方法
我有一個簡單的要求。 我需要創建一個簡單的應用程序,允許用戶從服務器上傳和下載大型文件(400 - 1500 MB)。 每個用戶都將有他的登錄信息,並且需要安全地上傳和下載大文件。
在PHP中實現這一點的最佳方法是什麼? 我應該注意的任何缺陷?
感謝, 阿米特
PHP 支持upload file streaming。
您可以使用像stream_open()
& stream_write()
等功能。
我也找到了一種方法on the web與PEAR這樣做,但我從來沒有嘗試過這樣的:
下面是筆者說:
中有PEAR將文件傳輸到另一種方法server1到 server2。 PEAR有上傳文件的HTTP包。
HTTP_REQUEST支持GET/POST/HEAD/TRACE/PUT/DELETE,基本 認證,代理,代理認證,SSL,文件上傳等
<?php
require_once "HTTP/Request.php";
$req =& new HTTP_Request("http://domain.com/upload");
$req->setBasicAuth("login", "pass");
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$result = $req->addFile("data", "/home/svnlabs.mp4");
if (PEAR::isError($result)) {
echo "Error occurred during file upload!";
} else {
$response = $req->sendRequest();
if (PEAR::isError($response)) {
echo "Error occurred during file upload!";
} else {
echo "File successfully uploaded!";
}
}
?>
是否轉讓必須通過完成HTTP?否則,您可能會有一個客戶端應用程序,當您選擇在您的站點上載圖像並使用FTP,SFTP或類似方式處理有問題的文件上載時,會觸發該應用程序。這可能是實現良好性能並且不使web服務器停止工作的最佳方式。
你可以啓動允許的文件大小並讓腳本運行直到完成。
ini_set('upload_max_filesize', '1024M');
ini_set('post_max_size', '1024M');
ini_set('max_input_time', 0);
ini_set('max_execution_time', 0);
但是,這不建議您正在談論的文件的大小。網絡服務器連接將會打開很長時間,並且中止上傳將很難恢復。
所以我會考慮有一個處理實際上傳的客戶端應用程序。您可以將它作爲Java-applet或CLI/GUI應用程序製作,用戶必須下載才能上傳文件。
[非常大的上傳與PHP]可能的副本(http://stackoverflow.com/questions/864570/very-large-uploads-with-php) – zaf
提供FTP上傳和下載? – ComFreek
@zaf感謝您指出。我想我可能錯過了那一個。 – Amit