Laravel MIME验证程序未按预期工作

时间:2017-10-19 08:39:35

标签: laravel-5 laravel-validation

我在Laravel 5.5中创建API,此API支持接收配置文件图片等的一些文件。

我想通过表单请求限制此操作仅接受 JPG PNG 图片,并且我设置了我的表单请求如下:

    'picture'    => 'nullable|image|mimetypes:image/jpeg,image/png,image/jpg|max:2000' // 2000KB or around 2MB per picture

然后,在我的PHPUnit / Codeception测试中,我使用Laravel自己的fake静态方法发送假图像,如下所示

'picture' => UploadedFile::fake()->image("hello.svg")

如果i DD运行测试时正在发送的图像文件,它会正确地将其 MIMEType 列为image/svg+xml,但不知何故,这会通过验证并出来另一端并不应该是这种情况,因为我的规则应该仅限制PNG或JPG文件。

还有其他人有这个问题吗?

2 个答案:

答案 0 :(得分:1)

确保您的表单具有属性 enctype =“multipart / form-data”

您可以在此处阅读enctype属性:What does enctype='multipart/form-data' mean?

答案 1 :(得分:0)

你写了错误的语法来验证图片验证中的图片类型。

你只需要像这样创建图片验证:

'picture' => 'nullable|image|mimes:jpeg,png|max:2000'