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 IST在5.7MB工作时不起作用)。我没有任何PHP错误。错误报告级别为 E_ALL & ~E_DEPRECATED

我还试图增加post_max_sizeupload_max_filesizememory_limit的值,但没有更改产生任何效果。

刚刚发现了错误。是post_max_sizephp.ini中更改(不仅是ini_set()),而不是upload_max_filesize

快速查看,请检查其他堆栈答案:

更改php

上的upload_max_filesize

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

最新更新