【问题标题】:Why HTML form stopped working on large files?为什么 HTML 表单停止处理大文件?
【发布时间】:2015-04-28 05:31:29
【问题描述】:

我创建了一个上传表单,当我上传小文件时它工作正常。当我尝试上传大文件时,html 表单不起作用。你有过这样的经历吗?

【问题讨论】:

  • 你的代码在哪里??
  • php.ini 文件中检查您的上传最大大小。
  • 非常感谢您提供宝贵的 cmets。我已通过更改 Php.ini 文件中的“post_max_size”清除了这一点。默认情况下,我的 WAMP 中只有 3 mb。我已将其更改为 20Mb

标签: php forms upload


【解决方案1】:

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

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

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

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

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 限制。

【讨论】:

    【解决方案2】:

    根据您的 php 版本,您可以尝试以下操作:

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

    只需将“32”替换为您想要的最大尺寸即可。

    【讨论】:

    • 使用 -1 而不是 32,这意味着没有限制。注意:设置时还要考虑您的 RAM 大小。
    猜你喜欢
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 2021-10-02
    • 2012-06-08
    相关资源
    最近更新 更多