2011-08-10 36 views
1

我已經看到圍繞這個主題的其他線程,但他們沒有幫助太多。PHP:上傳和下載大文件的最佳方法

我有一個簡單的要求。 我需要創建一個簡單的應用程序,允許用戶從服務器上傳和下載大型文件(400 - 1500 MB)。 每個用戶都將有他的登錄信息,並且需要安全地上傳和下載大文件。

在PHP中實現這一點的最佳方法是什麼? 我應該注意的任何缺陷?

感謝, 阿米特

+1

[非常大的上傳與PHP]可能的副本(http://stackoverflow.com/questions/864570/very-large-uploads-with-php) – zaf

+0

提供FTP上傳和下載? – ComFreek

+0

@zaf感謝您指出。我想我可能錯過了那一個。 – Amit

回答

2

PHP 支持upload file streaming

您可以使用像stream_open() & stream_write()等功能。

我也找到了一種方法on the webPEAR這樣做,但我從來沒有嘗試過這樣的:

下面是筆者說:

中有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!"; 
    } 
    } 
?> 
1

是否轉讓必須通過完成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應用程序製作,用戶必須下載才能上傳文件。

+0

是的,我們正在嘗試使用FTP。將張貼結果。 – Amit

+0

@明確結果是什麼? – Ray

相關問題