【问题标题】:Laravel 5.7.17 file validation issueLaravel 5.7.17 文件验证问题
【发布时间】:2019-05-16 15:46:15
【问题描述】:

示例基于 Laravel 的注册。

我在 register.blade.php 中添加了以下内容:

<div class="form-group row">
    <label for="file" class="col-md-4 col-form-label text-md-right">{{ __('Files') }}</label>

    <div class="col-md-6">
        <input type="file" id="files" name="files[]" multiple>
    </div>
</div>

RegisterController 中的方法如下所示:

protected function validator(array $data)
{
    $validator = Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'files.*' => ['required', 'file'],
    ]);

    dd($validator->errors());
}

我正在尝试上传 PDF 和 DOC 文件。:

MessageBag {#236 ▼
  #messages: array:2 [▼
    "files.0" => array:1 [▼
      0 => "The files.0 must be a file."
    ]
    "files.1" => array:1 [▼
      0 => "The files.1 must be a file."
    ]
  ]
  #format: ":message"
}

必须是文件?这些是文件...

【问题讨论】:

标签: laravel validation laravel-5


【解决方案1】:

只需将enctype="multipart/form-data" 添加到您的表单中:

<form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">

【讨论】:

  • 如果未选择文件,则不适用所需的验证。 pdf验证有效'files.*' =&gt; ['required', 'file', 'mimes:pdf'],你有什么想法吗?
  • 您是否尝试过在不删除 'files.*' =&gt; ['required', 'file'] 的情况下单独验证数组 'files' =&gt; ['required'],
  • 也尝试将name="files[]" 改为name="files"
  • 对于多个文件 [] 是必需的
  • 我测试了'files' =&gt; ['required', 'array'] 并且它有效,所以如果它不起作用,请提供有关问题的更多详细信息
【解决方案2】:

试试这个:

protected function validator(array $data)
{
    $validator = Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'files.*' => ['required', 'mimes:doc,docx,pdf,txt'],
    ]);

    dd($validator->errors());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-01
    • 2019-02-07
    • 2016-06-04
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2016-07-01
    相关资源
    最近更新 更多