2014-01-22 54 views
2

我试图将文件保存在我的服务器上。它适用于小文件,但不适用于大文件。file_get_contents('php:// input');返回空字符串与大文件

在JavaScript中,我发送文件用XMLHttpRequest如下

var ajax = new XMLHttpRequest(); 
ajax.open('POST', configuration.backend + 'ajax/uploadVideo', true); 
ajax.setRequestHeader('X-File-Name', input.files[0].name); 
ajax.setRequestHeader('X-File-Size', input.files[0].size); 
ajax.send(input.files[0]); 

在PHP这个脚本保存输入到硬盘:

$filename = $_SERVER['HTTP_X_FILE_NAME']; 
$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); 
$new_filename = uniqid().'.'.$extension; 
$fh = fopen(DOCROOT.'/public/videos/'.$new_filename, 'w'); 
fwrite($fh, file_get_contents('php://input')); 
fclose($fh); 

的脚本工作完美地与较小的文件,但不是较大的。它只是创建一个0字节的文件。 (8.7MB不工作,而5.7MB工作)。我没有得到任何PHP错误。错误报告级别为E_ALL & ~E_DEPRECATED

我也试过增加post_max_size,upload_max_filesizememory_limit的值,但没有任何改变产生任何效果。

+1

请原谅我提出这样一个明显的问题,但是您是否在更改php.ini后重新启动了Apache? –

+1

我没有看到任何'file_get_contents',但我看到一个'file_put_contents'。 “放”是问题,是的? – Ohgodwhy

+0

那么,他的上传,而不是下载,我认为... –

回答

1

刚发现错误。在php.ini(不只是ini_set()),而不是upload_max_filesize更改为post_max_size

-1

后一些快速寻找,看看这个其他协议栈回答出:

Changing upload_max_filesize on PHP

相信您需要调整您的上传大小在php.ini并重新启动Apache,函数ini_set()不能用来改变所有的PHP设置。

+0

正确,'upload_max_filesize'是'PHP_INI_PERDIR'可改变的,但链接到另一个SO问题/答案,因为你的答案并不酷。将此问题标记为重复而不是 – Phil

+0

对不起,我是这个网站的新手,我不知道我可以这样做。我的错。 –