Laravel多文件上传验证失效求助:始终返回数据无效
解决Laravel多文件上传验证始终返回无效的问题
我来帮你排查下这个多文件上传验证的问题,你遇到的错误大概率是两个关键地方没处理对:
1. HTML表单的文件字段名称错误
你当前的HTML里name="files..."是不对的,多文件上传时,必须把字段名设置为数组格式,这样Laravel才能正确接收多个文件。正确的写法应该是:
<input type="file" id="files" ref="files" multiple v-on:change="uoloadFiles()" name="files[]">
另外别忘了,包含这个文件输入的表单必须加上enctype="multipart/form-data"属性,否则文件根本无法被正确提交到后端。
2. 验证规则的写法不符合多文件场景
你之前的验证规则是针对单个文件的,但多文件上传时,files是一个数组,直接验证files为image肯定会失败——因为数组不是单个文件对象。正确的做法是先验证数组本身,再逐个验证数组里的每个文件:
Validator::make($request->all(), [ 'files' => 'required|array|min:1', // 确保至少上传1个文件,array规则声明这是数组类型 'files.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048' // 用*来匹配数组中的每一个元素 ])->validate();
另外你之前用的$request->all('files')其实没必要,直接传$request->all()就可以,或者用$request->only('files')也没问题,但核心还是规则的写法。
这样修改后,就能正确验证多个上传的文件了,符合规则的文件不会再返回无效提示。
内容的提问来源于stack exchange,提问作者Rahmani Seif El Moulouk
相关产品推荐
相关产品推荐

