我的PHP应用程序中存在文件上载实用程序的问题。当在表单上发送大文件(9MB +)时,我得到了一个非常奇怪的行为:我在表单中包含的POST数据消失了,包括文件信息。
我已经增加了所有PHP限制(时间限制,最大输入时间,发布最大大小,内存限制和上传最大文件大小),但仍然无法获得正确的行为。我尝试用基于Flash的解决方案(SWFUpload,www.swfupload.org)替换常规HTTP表单,仍然是相同的行为。
我尝试过多个类似大小的文件,但绝对不是特定的文件问题。我已经调试了使用Firebug发送的POST变量,并且标题中仍然存在正确的变量以及文件。
这可能会发生什么?
答案 0 :(得分:2)
也可以配置Web服务器以限制请求大小。如果您使用的是Apache,请查看LimitRequestBody指令。
答案 1 :(得分:2)
好的,我想我有解决方案。
您必须同时检查post_max_size
指令和$_SERVER['CONTENT_LENGTH']
,因此如果$ _SERVER ['CONTENT_LENGTH']超过post_max_size意味着他们正在尝试上传过多数据。
$POST_MAX_SIZE = ini_get('post_max_size');
$mul = substr($POST_MAX_SIZE, -1);
$mul = ($mul == 'M' ? 1048576 : ($mul == 'K' ? 1024 : ($mul == 'G' ? 1073741824 : 1)));
if( $_SERVER['CONTENT_LENGTH'] > $mul*(int)$POST_MAX_SIZE && $POST_MAX_SIZE )
{
$error = true;
}
从此处获取解决方案:http://www.php.net/manual/en/features.file-upload.php#73762
答案 2 :(得分:1)
尝试上传1 - 2 MB的小文件。如果您仍然无法发布代码。
希望您在表单定义中添加了enctype ='/ multipart / form-data'。
答案 3 :(得分:0)
你在运行什么服务器?我认为某些服务器操作系统对它们允许的大文件数量有限制。此值可以更改。