无法验证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 验证不会给出错误

Vuejs如何显示laravel输入数组验证错误

无法在 Laravel 6 中的 SMTP 服务器上进行身份验证

Laravel:验证表单中的名称输入

序列化表单验证 Laravel 8

Laravel 最大验证无法正常工作