为什么HTML表单停止处理大文件?

时间:2015-04-28 05:31:30

标签: php forms upload

我创建了一个上传表单在我上传小文件时工作正常。当我尝试上传大文件时,html表单无效。你有没有经历过这个?

2 个答案:

答案 0 :(得分:1)

默认情况下,PHP允许最大文件上传量为2MB。您可以要求用户在上传之前调整图片大小,但让我们面对它:他们不会。幸运的是,我们可以在必要时增加限制。

两个PHP配置选项控制最大上传大小:upload_max_filesizepost_max_size。对于10兆字节的文件大小,两者都可以设置为“10M”。

但是,您还需要考虑完成上传所需的时间。 PHP脚本通常会在30秒后超时,但10MB文件在健康的宽带连接上上传至少需要3分钟(请记住,上传速度通常比下载速度慢5倍)。此外,操纵或保存上载的图像也可能导致脚本超时。因此,我们需要将PHP的max_input_timemax_execution_time设置为300(以秒为单位指定5分钟)。

可以在服务器的php.ini配置文件中设置这些选项,以便它们适用于所有应用程序。如果您使用的是Apache,则可以在应用程序的.htaccess文件中配置设置:< / p>

php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_input_time 300
php_value max_execution_time 300

最后,您可以在PHP应用程序中定义约束:

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);

PHP还提供set_time_limit()功能,因此您无需直接设置max_execution_time

在PHP代码中设置选项可能更实用,因为当您的应用程序需要大量上传时,您可以延长执行时间并增加文件大小。其他形式将恢复为默认的30秒超时和2MB限制。

答案 1 :(得分:0)

根据您的php版本,您可以尝试以下内容:

ini_set('post_max_size', '32M');
ini_set('upload_max_filesize', '32M');
ini_set('memory_limit', '32M');

只需将“32”替换为所需的最大尺寸。