本文目录导读:

是的,Laravel 的验证器支持通过 MIME 类型验证文件,具体可以通过以下几种方式实现:
基本 MIME 类型验证(推荐)
使用 mimes 规则,基于文件扩展名:
$request->validate([
'file' => 'required|mimes:pdf,doc,docx,jpg,png'
]);
基于 MIME 类型字符串验证
使用 mimetypes 规则,基于实际 MIME 类型:
$request->validate([
'file' => 'required|mimetypes:application/pdf,image/jpeg,image/png'
]);
验证图片
专门用于图片验证:
$request->validate([
'photo' => 'required|image|mimes:jpeg,png,gif'
]);
在控制器中手动验证
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
'file' => [
'required',
'mimes:pdf,docx',
'mimetypes:application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document',
],
]);
安全提示
⚠️ 重要区别:
mimes:基于文件扩展名(可能被伪造)mimetypes:基于 PHP 的finfo函数读取文件(更安全)
推荐组合使用:
'file' => 'required|mimes:pdf|mimetypes:application/pdf'
常见 MIME 类型示例
application/pdf - PDF
application/msword - DOC
image/jpeg - JPEG
image/png - PNG
text/plain - TXT
application/zip - ZIP
这样就能有效防止通过修改文件扩展名绕过验证的安全问题。