【问题标题】:Can't validate input file in laravel无法验证laravel中的输入文件
【发布时间】:2023-03-11 02:52:01
【问题描述】:

我想验证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
  • 这就是我正在使用的

标签: laravel validation laravel-5 vue.js httprequest


【解决方案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 就可以了

      【讨论】:

        猜你喜欢
        • 2018-01-10
        • 2015-07-23
        • 1970-01-01
        • 2015-04-02
        • 2018-11-13
        • 2014-09-11
        • 2019-03-28
        • 2020-09-25
        • 2011-02-25
        相关资源
        最近更新 更多