Dropzone:无法将大图像上传到服务器(> 5M)

时间:2018-02-01 12:12:48

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

我在/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千字节。

当我更改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。

5 个答案:

答案 0 :(得分:0)

在dropzone选项中设置 maxFilesize

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

upload_tmp_dir = /tmp-alt

更改文件后,重新启动Apache并检查上传文件是否有效。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

首先:upload_max_filesize设置告诉单个上传文件的最大文件大小。然而,post_max_size告诉所有文件允许的最大大小(并且所有帖子字段都是准确的)。

例如,如果您想允许上传10个10M的文件,post_max_size应至少为10 * 10 = 100M。

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

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