我使用ajax和PHP的上传脚本,它可以为小于80MB的文件创造奇迹。但是,如果文件大于80MB,则失败,甚至不会输出任何内容。php://输入大文件失败
的代码是:
$maxsize = getMaxFileSize();
$finalfile = $uploadpath . $finalname;
$putdata = fopen("php://input", "r");
$fp = fopen($finalfile, "w");
$filesizecalc = 0;
while ($data = fread($putdata, 1024)) {
fwrite($fp, $data);
$filesizecalc = $filesizecalc + 1024;
}
fclose($fp);
fclose($putdata);
if ($filesizecalc <= $maxsize) {
addFile($_SESSION['userdata']['userid'], $finalname);
echo "$fn uploaded";
} else {
unlink($finalfile);
}
exit();
这工作得很好,几乎所有的文件< 80 MB,但超过80MB的文件大它不输出的东西,所以我甚至不知道发生了什么事情错,尽管我设置了
error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', 1);
ini_set('memory_limit', '1024M');
ini_set('upload_max_filesize', '1024M');
ini_set('post_max_size', '1024M');
ini_set('max_input_time', 10000);
ini_set('max_execution_time', 10000);
运行php_info()。通常upload_max_filesize不能使用ini_set – SimSimY 2012-04-22 14:28:02
进行设置。你是对的,它没有用ini_set设置。但是,它被主机设置为100M,对于一个99MB的文件应该足够了,对吧? 此外,max_input_time设置为60,是不是也低到? – 2012-04-22 14:40:32
我想说,上传100MB限制的99MB文件是有风险的 - 你应该为标题,控制数据包等额外增加10%.60秒内100MB的上传速度为1.7mb/s(上传速度为13.5Mb)。可能它是不够的 – SimSimY 2012-04-22 14:46:26