我正在尝试在我的服务器上保存文件。它适用于小文件,但不适用于大文件。
在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_size
,upload_max_filesize
和memory_limit
的值,但没有任何改变产生任何影响。
答案 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设置。