首页 > 解决方案 > Laravel 使用 ajax 验证文件最大大小

问题描述

我正在通过 axios 将数据上传到 Laravel 中的后端。在这些数据中,我发送了一张图片。在我的本地开发环境(Homestead)中,一切正常,当我尝试上传大于 2048 KB 的图片时,我从后端收到一条错误消息,指出文件太大。

这是我的图片验证字符串之一:

$this->validate($request, [
    ...
    'infrastructure_image' => 'image|max:2048|mimes:jpg,jpeg,png'
    ...
]);

这里我尝试上传大于 2048 KB 的图片:

这里我尝试上传大于 2048 KB 的图片

在这里,我在线尝试了同样的事情(使用 Laravel Forge 部署在服务器上):

在这里,我在线尝试了同样的事情(使用 Laravel Forge 部署在服务器上)

所以使用相同的代码,我有两个不同的结果。起初,我认为这可能是 PHP 的配置,而 Homestead 可能比我的生产服务器上更宽松。因此,我将有关文件上传的所有值更改为,例如,不小于 2048KB,这将导致 413 错误。

现在我在 PHP-FPM php.ini 文件中有:

post_max_size = 8M

upload_max_filesize = 8M

我通过 Forge 重新启动了 PHP-FPM。

还是一样的错误。

我在这里错过了什么吗?这怎么能用相同的代码给我两个不同的结果?

我还意识到的一件事是,在本地,文件似乎没有上传(可能是一种错误的印象,因为在本地 -> 本地上传确实更快)。但是在网站上上传时,我看到文件正在上传。不是上传文件太大了吗?或者无论发生什么,post 请求发送文件(不仅仅是它的信息)然后 Laravel 检查大小并在文件太大时返回错误。

在此先感谢您的帮助!

标签: phplaravelvalidation

解决方案


推荐阅读