首页 > 解决方案 > Laravel 文件验证不允许任何东西通过

问题描述

令人沮丧的一个:我正在验证我的 Laravel 应用程序中的文件上传,这是我抛出错误的行(我从 StackOverflow 复制粘贴了这个并仔细检查了它在 Laravel 文档中是否正确):

'video_file' => 'mimetypes:video/avi,video/mpeg,video/quicktime'

现在,您可能在想,“好吧,那么您要上传其中一种类型吗?您确定吗?”。

是的。

我关闭了验证,上传了相同的视频文件,并运行了这段代码来检查 MIME 类型是什么:

$files = $request->file('video_file');
foreach($files as $file) {
   file_get_contents($file);
   return $file->getMimeType();
}

想知道它返回了什么?

video/quicktime

那么,我应该如何验证有人正在上传视频文件?老实说,在这一点上,我真的不需要验证每个视频类型,我只需要确保它是 A VIDEO。不管是 .mov、.mp4、.avi 等等。

请记住,这是文件上传的“多重”输入,所以虽然这可能与它有关,但我不这么认为,因为我把它拿掉了,但它仍然没有通过。

有什么想法吗?

标签: phplaravellaravel-validation

解决方案


验证数组时,最好使用this

例如:

'video_files' => 'array',
'video_files.*' => 'mimetypes:video/avi,video/mpeg,video/quicktime',

如您所见,我还建议在处理数组时使用复数键,但这是个人喜好。


推荐阅读