无法验证laravel中的输入文件
Posted
技术标签:
【中文标题】无法验证laravel中的输入文件【英文标题】:Can't validate input file in laravel 【发布时间】:2018-09-30 15:54:51 【问题描述】:我想验证file input
,但验证不起作用它总是返回The given data was invalid.
,即使知道我正在同时上传多个文件,给出的文件满足验证要求:
这是我使用的验证:
Validator::make($request->all('files'), [
'files' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
])->validate();
这是我使用的 HTML:
<input type="file" id="files" ref="files" multiple v-on:change="uoloadFiles()" name="files"/>
知道我使用 vue 来处理表单提交。
感谢您的帮助
【问题讨论】:
我认为这是因为您一次上传多个文件,这使得files
成为一个数组,而不是单个文件。问题中没有提供足够的信息来验证这一点。
是的,我正在上传多个文件
你需要类似this
这就是我正在使用的
【参考方案1】:
如果你只有这个字段,你可以这样做:
Validator::make($request->only('files'), [
'files.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
])->validate();
否则使用不带参数的all
方法:
Validator::make($request->all(), [
'files.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
])->validate();
【讨论】:
【参考方案2】:这应该可以工作,因为您要上传多个文件,每个文件都应该单独验证。
Validator::make($request->all('files'), [
'files.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
])->validate();
注意*
。
进一步参考here
【讨论】:
【参考方案3】:试试
$this->validate(request(), [
'files' => 'required|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
我认为你不需要image
只需mimes
就可以了
【讨论】:
以上是关于无法验证laravel中的输入文件的主要内容,如果未能解决你的问题,请参考以下文章
如果字段是输入类型文件,laravel 中的 required_if 验证不会给出错误