0

关于使用 php 和 html5 上传一个文件的文件大小有多大的想法?

有没有关于好的组件或示例的建议来做到这一点?

多谢!

4

3 回答 3

2

PHP 在上传大文件时非常糟糕,特别是因为您必须使用高于文件大小的内存限制。同样,32 位系统上的 Apache 本身往往有 2gig 文件限制,因此即使 PHP 可以处理上传,Apache 也会阻塞。

您需要在 php.ini 中设置 upload_max_filesize 和 post_max_size 的值:

; 上传文件的最大允许大小。upload_max_filesize = 40M

; 必须大于等于upload_max_filesize post_max_size = 40M

如果你不能改变你的 php.ini,那你就不走运了。您不能在运行时更改这些值;当执行到达您对 ini_set 的调用时,上传大于 php.ini 中指定值的文件将失败。

请参阅核心 php.ini 指令的说明

上传文件的最大大小为整数。使用整数时,值以字节为单位

于 2013-01-29T07:08:55.623 回答
2

在服务器端,最大上传大小受 php post_max_sizeupload_max_filezize限制。

此外,您的网络服务器可以限制您的帖子正文的最大大小。例如,默认为Apache limitrequestbody或默认为0 = unlimitednginx client_max_body_size2MB

如果您打算使用 html5 上传大文件,您可能需要查看所有现代浏览器都支持的file.slice

文件 API 中对 .slice 的支持 Firefox 支持 Blob API 和随附的 .slice API。这可以帮助那些想要从 JavaScript 处理大型 File 对象的一部分而不必将整个文件加载到内存中的人。可靠上传大文件的人可以使用一些服务器和 JS 代码将大文件拆分为多个部分并上传块,包括重试失败的部分,甚至并行上传多个部分。

使用它,您可以分块上传巨型文件并再次在服务器端合并它们。

编辑

发现这篇很棒的文章解释了通过 xhr 流式传输的 html5 上传

http://www.webiny.com/blog/2012/05/07/webiny-file-upload-with-html5-and-ajax-using-php-streams/

此过程的内存占用非常低,您可能仍会遇到网络服务器和 php 上传限制,因为这是通过单个请求完成的。该代码应该让您了解整个技术是如何工作的。

于 2013-01-29T07:28:27.307 回答
0

最大文件大小值在 phi.ini 文件中定义。

在 php.ini 中搜索

上传文件的最大允许大小。

上传最大文件大小 = 32M

于 2013-01-29T07:14:38.620 回答