PHP文件上传(3.5 MB)上传

时间:2014-05-22 17:36:31

标签: php file-upload

我尝试使用文件输入来上传一个3.5MB的文件,但是当我尝试上传它时,我得到一个$ _FILES ['错误'] == 2,我相信这是告诉我该文件也是大。

我该怎么做才能上传?

这是我的一些代码:

<input type="hidden" name="MAX_FILE_SIZE" value="100000000000000000000000000000000000000000000000000000000000000">
<input type="file" id="home_pdf" name="home_pdf">

我的php设置如下:

post_max_size = 128M
memory_limit = 128M
max_file_uploads = 20
max_execution_time = 30
upload_max_filesize = 128M

4 个答案:

答案 0 :(得分:5)

100000000000000000000000000000000000000000000000000000000000000是一个太大的数字,并溢出。请改用134217728(128MB)。

PHP在64位安装上的最大int值为9,223,372,036,854,775,807,在32位安装上的最大int值为2,147,483,647。

我已经对此进行了测试,可以重现您的问题,并通过降低价值来解决问题。

请参阅POST method uploads

  

MAX_FILE_SIZE隐藏字段(以字节为单位)必须位于文件输入字段之前,其值是PHP接受的最大文件大小。应始终使用此表单元素,因为它可以节省用户等待传输大文件的麻烦,只是发现它太大而传输失败。请记住:在浏览器端愚弄此设置非常简单,因此不要依赖此功能阻止更大尺寸的文件。它仅仅是应用程序客户端用户的便利功能。然而,最大尺寸的PHP设置(在服务器端)不能被愚弄。

答案 1 :(得分:2)

您的MAX_FILE_SIZE字段太大。

from the PHP manual

  

UPLOAD_ERR_FORM_SIZE

     

价值:2;上传的文件超出了HTML表单中指定的MAX_FILE_SIZE指令

答案 2 :(得分:1)

根据文件:

  

UPLOAD_ERR_FORM_SIZE

     

价值:2;上传的文件超出了HTML表单中指定的 MAX_FILE_SIZE 指令。

您应该检查HTML表单中指定的 MAX_FILE_SIZE 指令。

另外,如@BrandonWamboldt所述,您已为 MAX_FILE_SIZE 指令指定了无效的属性值。

答案 3 :(得分:0)

这可能听起来很愚蠢,但有时在上传脚本中需要为php_ini添加设置。例如:

ini_set("max_execution_time", 120);
ini_set("max_input_time", 120);
ini_set("memory_limit", "128M");
ini_set("upload_max_filesize", "10M");
ini_set("post_max_size", "10M");

出于某种原因,这是有效的。我有类似的问题,这是我的解决方案。 我对名称MAX_FILE_SIZE和值1000000000000000000000000000000000000000000000000000000000000000000的看法实际上是错误的移动,不建议可见。那部分在PHP上传函数中定义并减少零的数量(该值太大了)。