【问题标题】:Dropzone : Cannot upload big images to server (>5M)Dropzone:无法将大图像上传到服务器(> 5M)
【发布时间】:2018-07-11 18:20:19
【问题描述】:

我在/etc/php/7.2/apache2/php.ini中有如下设置:

max_execution_time = 300
max_file_uploads = 20
memory_limit = 32M
post_max_size = 18M
upload_max_filesize = 20M

但是,如果我上传的文件大小超过 5M,我会收到以下消息:

给定的数据无效。

而且当我把 Dropzone 的完整错误响应放上去的时候,我也可以看到这条消息:

文件不得超过 5000 KB。

当我更改Dropzone选项maxFilesize时,它适用于小于5M的数字,但是当它大于5M时,上传仍然限制在5M。

另外,我的 .htaccess 文件没有上传大小限制。

这个问题可能来自哪里?

=== 编辑 #1 ===

下面是服务器上df的结果:

Filesystem     1K-blocks    Used Available Use% Mounted on
udev              989880       0    989880   0% /dev
tmpfs             200340    2884    197456   2% /run
/dev/sda1       10291200 3673732   6167924  38% /
tmpfs            1001696       0   1001696   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs            1001696       0   1001696   0% /sys/fs/cgroup

=== 编辑 #2 ===

我在我的 Laravel 项目中做了一个基本的上传页面,我能够上传更大的文件(>5M),所以我的问题一定来自 Dropzone。

【问题讨论】:

  • 这可能由于tmp 文件夹缓冲区大小而发生。可以把df的结果放到命令行里吗?
  • @Laerte 我已经用df 结果更新了我的帖子。但是,我的服务器和本地安装(使用 git 上传到服务器)都有同样的问题。

标签: php laravel-5 dropzone.js apache2.4 debian-stretch


【解决方案1】:

首先:upload_max_filesize 设置告诉单个上传文件的最大文件大小。但是,post_max_size 告诉了所有文件(准确地说是所有帖子字段)允许的最大大小。

如果你想允许上传 10 个 10M 的文件,post_max_size 至少应该是 10*10 = 100M。

还要确保您使用的是正确的 ini 文件。在 Web 浏览器中运行 phpinfo() 并检查加载的 ini 文件的位置。您可能正在编辑您的 CLI ini 文件,这些文件可能是一组不同的文件。

通过运行phpinfo(),您可以验证您的设置是否已使用。

【讨论】:

    【解决方案2】:

    我的问题来自控制器,我还可以选择设置最大尺寸。

    public function store(Request $request)
    {
        $request->validate([
        'file' => 'required|file|max:10000|mimes:' . $this->getAllowedFileTypes(),
        'attachable_id' => 'required|integer',
        'attachable_type' => 'required'
        ]);
        ...
    }
    

    【讨论】:

      【解决方案3】:

      这可能发生在使用 Linux tmp 文件夹来存储图像以对其进行任何转换的库中,例如调整大小。因此,值得尝试更改 PHP 用于存储 tmp 文件的文件夹。

      为此,您必须创建一个文件夹,例如/tmp-alt。确保此文件夹具有在其中存储文件的适当权限。然后,转到 PHP.ini,在您的情况下为 /etc/php/7.2/apache2/php.ini,并更改/创建以下属性:

      upload_tmp_dir = /tmp-alt
      

      修改文件后,重启Apache,检查上传文件是否成功。

      【讨论】:

      • 非常感谢您的回答,但问题实际上来自我的控制器,我有另一个选项来限制上传的文件大小。
      【解决方案4】:

      VirtualHost 部分中的 Apache 中设置限制最大请求正文大小:

      #Set Max to 20MB 
      <Location />
              LimitRequestBody 20971520
          </Location>
      

      【讨论】:

      • @maxagaz 问题是删除文件还是上传文件?
      • 请检查这个答案:stackoverflow.com/a/36603568/7348119
      • 根据进度条,文件已正确上传,然后我收到此消息。
      【解决方案5】:

      在 dropzone 选项中设置 ma​​xFilesize

       <script>
            Dropzone.options.myDropzone = {
              maxFilesize: 500,
            }
      </script>
      

      【讨论】:

      • 我试过了,问题中提到,不幸的是,数字大于5M,不考虑,只限制在5M。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2022-09-26
      相关资源
      最近更新 更多