【发布时间】:2014-07-31 08:00:24
【问题描述】:
我想允许多个文件上传,所以我认为这样做:
{{ Form::file('files[]', array('multiple'=>true)); }}
它有效,但我无法验证它。出于测试目的,我创建了这条规则:
'files' => 'required|mimes:png,jpg,jpeg'
但它不起作用,它总是说mime类型不正确,我也用png尝试过。 任何人都可以帮助我吗?我还尝试从文件输入名称中删除 []。 可能是laravel在验证时不支持多个文件的问题?
谢谢
【问题讨论】:
-
MIME 类型有不同的形式,像这样:
image/png,image/jpeg... 所以你可能指定了错误的 MIME 类型。 -
我无法给出答案,因为我的知识在这里不太好,但首先尝试将验证更改为
required|image,而不是指定图像的 mime 类型。 (FWIW 我的一个团队在过去使用mimes规则时肯定遇到过问题,因为您使用image修复了它。)还有一个验证规则array确保值是一个数组。但是,我不知道您是否可以针对数组的实际元素设置规则。文档在这里毫无用处。 -
我也从未与 Laravel 合作过,但当我读到你的问题时,这就是我的第一个想法。您可能对此感兴趣:stackoverflow.com/questions/19849702/laravel-mime-validation。所以这个问题可能是上述问题的重复。
-
我也试过这样的验证规则:
'files' => 'required|mimes:image/jpg,image/jpeg|max:20000',但它仍然不起作用。 -
@user3038158 最后你可能会发现你必须在这里做一些手动验证 - 首先确保
files验证array然后,如果是这样,遍历所有文件并验证每个人都单独反对required|image。然后以某种方式将所有验证错误捆绑到一个 MessageBag 中,以便在出现错误时发送到重定向。