2012-10-02 40 views
1

我真正想要做的是:文件上傳腳本作爲代理

  • 用戶將上傳到腳本從一個HTML頁面
  • 腳本將登錄,並返回鏈接

好,所有這些都可以通過捲曲和通過多部分文章的接受文件輕鬆完成。

但這裏的問題是,它將開始上傳文件從服務器到另一個通過捲曲後所有上傳完成:(所以這將需要很長的過程。 我想知道它是否有可能使它像用戶上傳文件,還可以繼續發送以塊的數據,如下載文件

我不知道這是否甚至有可能用PHP。如果沒有,通過這個可以成爲可能

回答

4

您可以任何其他方式用cURL做這個:

// Open a stream so that we stream the image download 
$localFile = $_FILES[$fileKey]['tmp_name']; 

$stream = fopen($localFile, 'r'); 

// Create a curl handle to upload to the file server  
$ch = curl_init($fileServer); 
// Send a PUT request 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
// Let curl know that we are sending an entity body 
curl_setopt($ch, CURLOPT_UPLOAD, true); 
// Let curl know that we are using a chunked transfer encoding 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Transfer-Encoding: chunked')); 
// Use a callback to provide curl with data to transmit from the stream 
curl_setopt($ch, CURLOPT_READFUNCTION, function($ch, $fd, $length) use ($stream) { 
    return fread($stream, $length) ? ''; 
}); 

curl_exec($ch); 
+0

嗨,感謝您的代碼。當然這會有所幫助。但是,當我們使用流作爲文件用戶時,上傳的內容呢? :因爲之前無法打開。例如:$ _FILE ['file'] –

+0

請參閱編輯答案 – GBD

+0

嗯,好吧,但是,一旦整個文件從客戶端的PC上傳到服務器,這不會發生嗎?這就是爲什麼我認爲這將不可能在PHP中,因爲請求是在整個文件上傳後,而不是在大塊 –