2013-06-29 109 views
0

我想上傳大文件(超過200MB),通過FORMDATA和XMLHttpRequest的這樣試圖從FORMDATA上傳大文件

var fd = new FormData; 
fd.append('files[]', file); 

xmlHttpRequest.open("POST", url, true); 
xmlHttpRequest.send(fd); 
在PHP腳本

我有

<?php 
var_dump("IN"); 
var_dump($_FILES); 

出來:

IN 
array() 

請求等待10秒鐘並完成。小文件都很好,沒有FormData(簡單的ajax)都很好。 php.ini中的所有設置都具有最大值。怎麼了?

如果它可以幫助,這是我的請求頭:

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 
Cache-Control no-cache 
Content-Length 294561150 
Content-Type multipart/form-data 
Host test1 
Referer http://test1/ 
User-Agen Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0 
X-Requested-With XMLHttpRequest 

響應頭:

Connection close 
Content-Encodin gzip 
Content-Length 51 
Content-Type text/html 
Date Sat, 29 Jun 2013 23:03:26 GMT 
Server Apache/2.2.22 (Ubuntu) 
Vary Accept-Encoding 
X-Powered-By PHP/5.4.17RC1 

我/etc/php5/apache2/php.ini:

file_uploads = On 
upload_max_filesize = 512M 
max_file_uploads = 20 
max_input_time = 10000 
memory_limit = 2048M 
max_execution_time = 10000 
post_max_size = 1024M 

我的腳本鏈接:http://www.megafileupload.com/en/file/430866/test1-tar-gz.html

PS全時間運行10秒然後完成。

+0

您說過PHP.ini中的所有設置都有最大值,但我們如何知道您設置了正確的設置?發佈您更改的php.ini設置。 –

回答

1

沒有看到你的php.ini文件,這些事情會影響上傳和需要相應地改變他們

file_uploads 
upload_max_filesize 
max_input_time 
memory_limit 
max_execution_time 
post_max_size 

所有這些設置都具有較大的文件相當高的設置。小心不要讓你的memory_limit太高,這可能是危險的。我可能會做128MBmax_execution_time被許多人遺忘,默認值爲30秒。沒有足夠的大文件。自從我處理大型視頻後,我將其設置爲1000。這是腳本沒有完成並且會過早完成的常見原因。您可能需要也可能不需要重新啓動Web服務器。