【问题标题】:Laravel 5 upload multiple image validationLaravel 5 上传多张图片验证
【发布时间】:2015-09-14 15:45:32
【问题描述】:

我正在尝试一次上传多张图片。文件正在上传,但即使它们不是有效的 iamge,它们也通过了验证。我想上传所有有效文件并返回一条消息,其中包含未成功上传的文件数量。

我的功能:

public function addImages($id, Request$request)
{
    $files = Input::file('images');
    $uploaded = 0;
    $failed = 0;
    foreach ($files as $file) {

        // Validate each file
        $rules = array('file' => 'required|image');
        $validator = Validator::make(array('file'=> $file), $rules);

        if($validator->passes()) {
            $destinationPath = 'uploads';
            $filename = $file->getClientOriginalName();
            $upload_success = $file->move($destinationPath, $filename);
            if($upload_success){
                $uploaded ++;
            }
            else {
               $failed ++;
            }
        } else {
            $failed ++;
        }
    }
    \Session::flash('success_message',$uploaded.' files uploaded.');
    if($failed > 0){
        \Session::flash('errors','Some files werent valid.');
    }
    return redirect('admin/myroute/'.$id);
}

由于某种原因,如果我上传没有任何扩展名的文件,它们仍然会被上传。我做错了什么?

【问题讨论】:

    标签: php validation file-upload laravel-5


    【解决方案1】:

    你不应该在控制器中验证它,你应该使用它的每个方法,例如在你的请求文件中。

    protected function getValidatorInstance()
    {
        $validator = parent::getValidatorInstance();
    
    
        $validator->each('files', ['image']);
    
        return $validator;
    }
    

    这只是检查所有文件。

    更多信息,

    Laravel API about validation

    【讨论】:

      【解决方案2】:

      如果您要进行验证,您应该指定类似的文件类型,您可以指定名称并像这样进行验证 'image' => 'mimes:jpeg,jpg,bmp,png' 。希望这会有所帮助

      【讨论】:

      • image 是输入字段名称, mimes 是验证
      • 图片也是验证规则,默认使用mimes:jpeg,jpg,png,bmp。
      • 我知道,但在我给出的代码中,image 表示输入名称 :) 并给出 mimes 验证 :) 可能我们都误解了 nm :)
      • 我知道,问题是你不需要使用哑剧来代替问题上提出的图像。
      猜你喜欢
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 2019-09-05
      • 2018-04-28
      • 2017-07-25
      • 2016-10-30
      • 2017-02-05
      • 1970-01-01
      相关资源
      最近更新 更多