📅  最后修改于: 2023-12-03 14:43:50.969000             🧑  作者: Mango
在 Laravel 中,我们可以使用 mimes
规则验证上传文件的 MIME 类型是否符合要求。但是,有些时候,即使上传的文件的 MIME 类型在规定的列表中,验证也会失败。本文将介绍一些可能的原因和解决方案。
如果上传的文件名中包含空格, L avarel 将无法正确确定 MIME 类型。例如,如果你上传一个名为 "my file.jpg" 的文件,并且启用了 image/*
MIME 类型验证规则,Laravel 将返回验证失败的错误信息。
解决方案: 重命名文件,确保文件名中不包含空格或其他特殊字符。
Laravel 默认的 mimes
规则验证器中包含了许多常见的 MIME 类型,但不一定包含你要验证的类型。例如,如果你想验证 WebP 图像文件,它不在默认的 MIME 类型参考表中,你需要将它手动添加到验证规则中:
$request->validate([
'image' => 'required|mimes:jpeg,png,webp',
]);
在这个例子中, mimes
规则指定了要验证的 MIME 类型列表,其中包含了 WebP 图像的 MIME 类型。你可以将你想要使用的 MIME 类型添加到该列表中。
某些浏览器/服务器安全设置可以防止 MIME 类型推断。例如,如果你在服务器上启用了 "Content-Type Options : nosniff " 访问控制头,浏览器将禁止 MIME 类型推断,而返回为未知类型的二进制文件。这将导致 Laravel 验证不会正确地确定文件的 MIME 类型,从而导致验证失败。
解决方案: 禁用服务器或浏览器安全设置中的 MIME 类型推断。
以上介绍了一些可能导致 Laravel 的 MIME 类型验证失败的原因和解决方案。在使用 mimes
规则验证文件时,请要注意以上问题,以确保你的验证器能够正常工作。