【发布时间】:2015-07-02 18:29:55
【问题描述】:
好的,我正在尝试上传视频,并验证文件类型。
根据文档:
mimes:foo,bar,...
正在验证的文件必须具有与列出的扩展名之一相对应的 MIME 类型。
MIME 规则的基本用法
'照片' => 'mimes:jpeg,bmp,png'
我正在上传一个 wmv 视频,我的规则是这样的:
return [
'file' => ['required', 'mimes:video/x-ms-wmv']
]
我在Request::file('file') 上做了一个print_r(),我得到了以下数据:
Symfony\Component\HttpFoundation\File\UploadedFile Object
(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] =>
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => SampleVideo.wmv
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => video/x-ms-wmv
[size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 70982901
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[pathName:SplFileInfo:private] => C:\wamp\tmp\php6428.tmp
[fileName:SplFileInfo:private] => php6428.tmp
)
但是我得到了错误:
{"file":["The file must be a file of type: video\/x-ms-wmv."]}
我尝试将“mime 类型”更改为 video/*、wmv(根据文档)以及 video/x-ms-wmv,但它们都没有正确验证文件。
从print_r() 中可以看出,Symfony 的 MIME 类型变得是 video/x-ms-wmv。
我做错了吗?或者 Laravel/Symfony 不能很好地验证文件?
感谢您的帮助
编辑
好的,我打开validator.php并在ValidateMimes()方法中添加了echo $value->guessExtension();,它输出了asf。
为什么 Symfony 输出 video\x-ms-wmv,文件扩展名是 wmv,我正在验证它们,但 Laravel 猜测 asf?!
视频验证对我来说太不可靠了。
【问题讨论】:
-
我也遇到了这个问题,问题出在我使用的 PHP 版本上,尝试创建一个 vanilla php 文件并使用 Fileinfo 函数检查视频的 mime 类型php.net/manual/en/book.fileinfo.php