Laravel 10上传PDF文件遇验证错误:已传PDF却被判定非PDF
Laravel 10 PDF上传验证失败的解决办法
常见原因及解决方案
改用
mimetypes规则替代mimes
Laravel的mimes:pdf仅通过文件扩展名验证,而mimetypes:application/pdf会检测文件实际的MIME类型,准确性更高。修改验证规则:'your_file_field' => 'required|file|mimetypes:application/pdf',也可同时结合两种规则,兼顾扩展名与实际MIME类型:
'your_file_field' => 'required|file|mimes:pdf|mimetypes:application/pdf',检查表单
enctype属性
确保上传表单添加了enctype="multipart/form-data",否则文件无法正确上传,验证必然失败:<form method="POST" action="/upload" enctype="multipart/form-data"> <!-- 表单内容 --> </form>手动验证文件头
若以上方法无效,可手动读取文件头判断是否为PDF(PDF文件头固定为%PDF-):$file = $request->file('your_file_field'); $fileHeader = file_get_contents($file->getRealPath(), false, null, 0, 5); if ($fileHeader !== '%PDF-') { return back()->withErrors(['your_file_field' => '请上传有效的PDF文件']); }检查服务器MIME配置
部分服务器的mime.types文件未正确映射PDF的MIME类型,可联系管理员确认application/pdf是否与.pdf扩展名关联。
内容的提问来源于stack exchange,提问作者Muhammad Seman
相关产品推荐
相关产品推荐

