【问题标题】:Validation doesn't work for image upload in laravel 5验证不适用于 laravel 5 中的图像上传
【发布时间】:2015-10-18 04:52:08
【问题描述】:

验证输入时遇到问题。除图像字段外,所有输入字段都通过了验证过程。

这是我的html文件上传代码:

<div class="control-group">
 <label class="control-label" for="fileInput"> Cover picture: </label>
    <div class="controls">
      {!! Form::file('cover') !!}
    </div>
</div>

以及我如何从控制器的视图中获取数据:

$datas = array(
        'name' => Input::get('name'),
        'color' => Input::get('color'),
        'size' => Input::get('size'),
        'cover' => array('cover' => Input::file('cover'))
    );

这是规则:

$rules = array(
        'name' => 'required',
        'color' => 'required',
        'size' => 'required',
        'cover' => 'required|mimes:jpeg,jpg,png|max:10000'
    );

还有验证门面的make方法:

$validator = Validator::make($datas, $rules);

正如我之前提到的,所有验证规则都通过了输入,但是对于图像它给了我一个错误:

封面必须是以下类型的文件:jpeg、jpg、png。

现在,我该如何解决?

【问题讨论】:

  • 您上传的是 JPEG、JPG 还是 PNG 文件?
  • 是的,我正在上传 JPEG、JPG 或 PNG。但它仍然给我一个错误。
  • 您的Form::open 通话中是否包括files =&gt; true
  • 是的,ceejayoz。我在 Form::open 中包含了 'files' => true。但还是报错。
  • Input::file('cover') 应该返回一个文件数组,而无需在掩护下创建一个辅助数组。它现在是多维的,而不是预期的。

标签: php validation laravel-5


【解决方案1】:

我认为你应该以不同的方式处理这个问题......

如果你只是像这样创建你的函数..

// The Illumniate/Http/Request version of Request in laravel
public function yourFunction(Request $request){
    ....
    $rules = ...;
    $validator = Validator::make($request->all(), $rules);
}

Validator 的预期格式会自动处理,因为它会返回它。当它运行时,你可以处理你已经拥有的一切。


因为这是被接受的。用上面的代码实际修复它的方法是删除多维数组并使用Input::file('cover'),因为它自己返回一个数组。

【讨论】:

  • 重申use Illuminate\Http\Request; 需要在控制器文件的顶部很重要。
  • 谢谢,Cayce K。正如你所说 Input::file('cover') 返回数组。当我把它放到另一个数组中时,它给了我二维数组。当我删除数组时,它起作用了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2015-09-14
  • 2016-01-31
  • 2015-10-31
相关资源
最近更新 更多