使用ajax在图像上传中进行Laravel表单验证

时间:2016-03-10 10:30:46

标签: ajax validation laravel laravel-5 routes

我正在使用laravel 5.并使用blade和ajax上传图片。 除非我在控制器内的商店功能中插入验证码,否则每件事情都工作正常。出现服务器错误:

POST http://localhost:8000/imgC 500 (Internal Server Error)

我想在ajax或路由中的url有问题,我正在使用Restfull Controller。

image.blade.php

{{Form::open(array('url' => 'imgC', 'method' => 'post','files'=>true, 'id'=>'upload_form'))}}
   Title: {{Form::text('title')}}
   Image: {{Form::file('image')}}
   {{Form::submit('submit',['id' => 'btnAddProduct'])}}
   {{Form::close()}}

ImageController.php:

public function store(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required|max:255',
    ]);

    if ($validator->fails()) {
        return "error";
    }
    $destinationpath = public_path() . '/img/';
    $image=$request->input('image');
    $filename=$request->file('image')->getClientOriginalName();
    $request->file('image')->move( $destinationpath,$filename );


    $img= new Image;
    $img->name= $request->input('title');
    $img->picture_path=$filename;

    $saveflag=$img->save();
    if($saveflag){
        return Response::json(['success' => $saveflag, 'file' => asset($destinationpath.$filename)]);
    }

}

AJAX功能:

$(document).ready(function() {
  $('#upload_form').submit(function (event) {
      event.preventDefault();
      $.ajax({
          url: '/imgC',
          data: new FormData($(this)[0]),
          type: "POST",
          processData: false,
          contentType: false
      }).done(function (response) {
          console.log(response);
          $("#success").show();
          setTimeout(function() { $("#success").hide(); }, 5000);

      });
  });
});

route.php:

Route::resource('imgC', 'ImageController');

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我查看了服务器日志文件并找出了它。 添加Use Validator后验证出错;在图像控制器中,问题解决了