首页 > 解决方案 > 无法在laravel中通过ajax上传图片

问题描述


我尝试在 laravel 中通过 ajax 上传图片。
这是我的js代码:

$('#profile_picture').on('submit', function(event){
    event.preventDefault();
    $.ajax
    ({
        type: "POST",
        url: "{{url('all/update-profile-picture')}}", 
        data:new FormData(this),
        dataType:'json',
        type:'post',
        processData: false,
        contentType: false,
        cache:false,
    }).done( function(data){
      //swal("Good job!", "Your information has been successfully updated!", "success")
          console.log('Ajax was Successful!')
          console.log(data)
    }).fail(function(xhr, textStatus, error){
        console.log(textStatus)
        console.log(error)
    });
});

这是控制器代码:

$validation = Validator::make($request->all(), [
    'profile_photo'=> 'required|image|mimies:jpeg,png,jpg,gif|max:2048'
]);
if ($validation->passes()) {
    //$image = $request->file('profile_photo');
    $new_name = time().'.'.$request->image->getClientOriginalExtension();
    $request->image->move(public_path("photo"),$new_name);
    return response()->json([
        'message' => 'Image uploaded successfully'
    ]);
} else {
    return response()->json([
        'message' => $validation->errors()->all(),
        'profile_photo' => '',
        'class_name' => 'danger'
    ]);
}

我希望它是我的控制器的问题。当单击带有空白的提交时,它会在控制台中看到错误消息。
我不明白这是什么问题??

标签: ajaxlaravellaravel-5

解决方案


您需要使用 file() 方法来获取您的请求文件。

$validation = Validator::make($request->all(), [
    'profile_photo'=> 'required|image|mimies:jpeg,png,jpg,gif|max:2048'
]);

if ($validation->passes()) {

    $new_name = time().'.'.$request->file('profile_photo')->getClientOriginalExtension();
    $request->file('profile_photo')->move(public_path("photo"),$new_name);

    return response()->json([
        'message' => 'Image uploaded successfully'
    ]);
} 

return response()->json([
    'message' => $validation->errors()->all(),
    'profile_photo' => '',
    'class_name' => 'danger'
]);

推荐阅读