【问题标题】:Multiple file upload and validation多文件上传和验证
【发布时间】:2014-07-31 08:00:24
【问题描述】:

我想允许多个文件上传,所以我认为这样做:

{{ Form::file('files[]', array('multiple'=>true)); }}

它有效,但我无法验证它。出于测试目的,我创建了这条规则:

'files' => 'required|mimes:png,jpg,jpeg'

但它不起作用,它总是说mime类型不正确,我也用png尝试过。 任何人都可以帮助我吗?我还尝试从文件输入名称中删除 []。 可能是laravel在验证时不支持多个文件的问题?

谢谢

【问题讨论】:

  • MIME 类型有不同的形式,像这样:image/png, image/jpeg... 所以你可能指定了错误的 MIME 类型。
  • 我无法给出答案,因为我的知识在这里不太好,但首先尝试将验证更改为required|image,而不是指定图像的 mime 类型。 (FWIW 我的一个团队在过去使用mimes 规则时肯定遇到过问题,因为您使用image 修复了它。)还有一个验证规则array 确保值是一个数组。但是,我不知道您是否可以针对数组的实际元素设置规则。文档在这里毫无用处。
  • 我也从未与 Laravel 合作过,但当我读到你的问题时,这就是我的第一个想法。您可能对此感兴趣:stackoverflow.com/questions/19849702/laravel-mime-validation。所以这个问题可能是上述问题的重复。
  • 我也试过这样的验证规则:'files' => 'required|mimes:image/jpg,image/jpeg|max:20000',但它仍然不起作用。
  • @user3038158 最后你可能会发现你必须在这里做一些手动验证 - 首先确保 files 验证 array 然后,如果是这样,遍历所有文件并验证每个人都单独反对required|image。然后以某种方式将所有验证错误捆绑到一个 MessageBag 中,以便在出现错误时发送到重定向。

标签: laravel laravel-4


【解决方案1】:

我遇到了同样的问题,我通过编辑请求处理程序的代码得到了解决方案。

public function rules()

{
    $rules = [];

    $nbr = count($this->file('field_name')) - 1;

    foreach(range(0, $nbr) as $index) {

        $rules['field_name.' . $index] = 'required|mimes:jpeg,jpg,png';

    }

    return $rules;

}

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2018-02-16
    • 2018-07-16
    • 2017-11-05
    • 2015-02-25
    相关资源
    最近更新 更多