【发布时间】:2012-04-22 14:24:23
【问题描述】:
我正在使用带有 ajax 和 PHP 的上传脚本,它对小于 80MB 的文件效果很好。但是,如果文件大于 80MB,则会失败,甚至根本不会输出任何内容。
代码是:
$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();
这适用于几乎所有
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);
【问题讨论】:
-
在 ini_set 之后运行 php_info()。通常upload_max_filesize不能用ini_set设置
-
你是对的,它不是用 ini_set 设置的。但是,它被主机设置为100M,对于一个99MB的文件来说应该足够了,对吧?还有,max_input_time设置为60,是不是也太低了?
-
我会说上传 99MB 文件和 100MB 限制是有风险的 - 你应该为标头、控制数据包等多花约 10%。60 秒内 100MB 是 1.7mb/s 上传速度(13.5Mb上传链接)。可能还不够
-
我的主机刚刚将upload_max_filesize 增加到1024,将max_input_time 增加到3600,但仍然无法正常工作。这很奇怪:\
-
签入 apache error_log 文件
标签: php file-upload upload