的file_get_contents( 'PHP://输入');返回带有大文件的空字符串

时间:2014-01-22 00:08:58

标签: javascript php

我正在尝试在我的服务器上保存文件。它适用于小文件,但不适用于大文件。

在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字节的文件。 (当7.7MB工作时,8.7MB不工作)。我没有得到任何PHP错误。错误报告级别为E_ALL & ~E_DEPRECATED

我还尝试增加post_max_sizeupload_max_filesizememory_limit的值,但没有任何改变产生任何影响。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

经过一番快速查看后,请检查其他堆栈的答案:

Changing upload_max_filesize on PHP

我相信您需要在php.ini中调整上传大小并重新启动apache,ini_set()不能用于更改所有PHP设置。