如何在php中上传大文件(100 mb)

时间:2011-11-26 13:21:08

标签: php mysql file-upload

我已经在php中将两个PDF文件上传到服务器。但它们是正确上传的,但在上传较大的文件时我收到错误。我使用mysql服务器

如何在php上传大文件(100 mb)?

5 个答案:

答案 0 :(得分:6)

从php.ini默认设置:

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M

如果您想要更大的上传,请更改此值。

我不完全确定,但我不认为ini_set会在这种情况下起作用。您需要直接访问php.ini

答案 1 :(得分:3)

我不会更改upload_max_filesize。使用HTTP POST上传大文件并不能提供任何关于上传剩余时间的反馈等信息。对于大多数浏览器,页面只是在文件上传时挂起。如果客户端上传文件的时间太长,您也会遇到脚本超时问题。根据您之后是否在PHP中处理文件,您还可能遇到内存耗尽的问题。

我们使用PLUpload http://www.plupload.com将文件分块成小块并上传每个块。在服务器上,PHP脚本将获取每个POST文件块并将其附加到现有块以重建另一侧的大文件。我们已经测试了几百MB的文件。这样做效果更好,为用户提供了更好的用户体验。

利奥

答案 2 :(得分:2)

添加Tom van der Woerdt关于upload_max_filesize的答案:

有可能,还必须更改默认执行限制,否则在您上传大文件时脚本会超时。

另请参阅:

post_max_size max_input_time max_execution_time

答案 3 :(得分:2)

您可能需要在php.ini文件中更改以下选项:

  1. upload_max_filesize(仅限php.ini或.htaccess,使用ini_set()无效)

  2. post_max_size(同上)

  3. memory_limit(同上)

  4. 以下是每个选项的解释:

    PHP使用的3种设置限制了您的上传功能:

    的post_max_size

    这是表单上发送的所有文件的最大组合大小。如果表单上有2个文件字段,则2个文件的总文件大小不得超过post_max_size值。

    的upload_max_filesize

    这是每个文件的文件大小限制。

    memory_limit的

    PHP脚本有内存限制,一般来说这可以防止某些上传工作。限制应该设置在合理的水平,当然你不需要20mb的简单“hello world”脚本。如果您发现上传仍无效,请尝试慢慢增加此值。

答案 4 :(得分:1)

设置max_upload_size和post_max_size的建议是正确的,但在某些安装中仍可能遇到问题。设置这些值时要记住的一件事是post_max_size至少是max_upload_size值的两倍。换句话说,如果将max_upload_size设置为100mb,则post_max_size必须为200mb,否则设置将被拒绝,引擎将使用默认设置2mb和8mb。此外,您需要确保memory_limit至少是max_upload_size的大小。如果你提高了帖子并上传了大小,但是你没有分配足够的内存,那么你仍然会遇到问题。