7

我的 PHP 应用程序中的文件上传实用程序出现问题。通过表单发送大文件(9MB+)时,我得到一个非常奇怪的行为:我在表单中包含的 POST 数据消失了,包括文件信息。

我已经增加了所有可能的 PHP 限制(时间限制、最大输入时间、帖子最大大小、内存限制和上传最大文件大小),但我仍然无法获得正确的行为。我尝试用基于 Flash 的解决方案(SWFUpload,www.swfupload.org)替换常规的 HTTP 表单,但行为仍然相同。

我已经尝试了多个类似大小的文件,但它绝对不是一个特定的文件问题。我已经调试了使用 Firebug 发送的 POST 变量,并且正确的变量与文件一起仍然存在于标题中。

这里会发生什么?

4

4 回答 4

2

Web 服务器也可以配置为限制请求大小。如果您使用的是 Apache,请查看LimitRequestBody指令。

于 2010-05-21T19:23:44.707 回答
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

于 2010-12-29T11:13:26.097 回答
1

尝试上传 1-2 MB 的小文件。如果您仍然无法发布代码。

希望您在表单定义中添加了 enctype='/multipart/form-data' 。

于 2010-05-21T19:22:21.433 回答
0

你在什么服务器上运行?我认为某些服务器操作系统对它们允许的文件大小有限制。该值可以更改。

于 2010-05-21T19:23:29.230 回答