Ajax图像上载到数据库不起作用

时间:2020-01-10 08:14:18

标签: ajax laravel

我正在尝试使用Ajax将图像上传到数据库,但是它仅将图像存储到public / images目录中,从不将图像存储到数据库中,我已经从解决方案中获取了用于测试目的的图像,但是从不工作,任何人都可以告诉我我在哪里错吗?

路线

Route::get('ajaxImageUpload', ['uses'=>'AjaxImageUploadController@ajaxImageUpload']);
Route::post('ajaxImageUpload', ['as'=>'ajaxImageUpload','uses'=>'AjaxImageUploadController@ajaxImageUploadPost']);

控制器

public function ajaxImageUploadPost(Request $request) {
    $validator = Validator::make($request->all(), [
                'title' => 'required',
                'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
    ]);
    if ($validator->passes()) {
        $input = $request->all();
        $input['image'] = time() . '.' . $request->image->getClientOriginalExtension();
        $request->image->move(public_path('images'), $input['image']);
        AjaxImage::create($input);
        return response()->json(['success' => 'done']);
    }
    return response()->json(['error' => $validator->errors()->all()]);
}

查看

<form action="{{ route('ajaxImageUpload') }}" enctype="multipart/form-data" method="POST">
    <input type="text" name="title" class="form-control" placeholder="Add Title">
    <input type="file" name="image" class="form-control">
    <button class="btn btn-success upload-image" type="submit">Upload Image</button>
</form>

<script>
    $("body").on("click", ".upload-image", function (e) {
        $(this).parents("form").ajaxForm(options);
    });
    var options = {
        complete: function (response) {
            if ($.isEmptyObject(response.responseJSON.error)) {
                $("input[name='title']").val('');
                alert('Image Upload Successfully.');
            } else {
                printErrorMsg(response.responseJSON.error);
            }
        }};
    function printErrorMsg(msg) {
        $(".print-error-msg").find("ul").html('');
        $(".print-error-msg").css('display', 'block');
        $.each(msg, function (key, value) {
            $(".print-error-msg").find("ul").append('<li>' + value + '</li>');
        });
    }
</script>

2 个答案:

答案 0 :(得分:0)

将图像位置保存到数据库

答案 1 :(得分:0)

使用intervention;

public function ajaxImageUploadPost(Request $request){
    $validator = Validator::make($request->all(), ['title' => 'required','image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048']);
    if ($validator->passes()) {
        $image = new AjaxImage();
        $image->title = $request->title;    
        if ($request->hasFile('image')) {
            $img=$request->file('resim');
            $filename=time().".".$img->getClientOriginalExtension();
            $location=public_path('img/'.$filename);
            Image::make($img)->save($location);
            $image->image=$filename;
        }
        $image->save();
        return response()->json(['success'=>'done']);
    }
    return response()->json(['error'=>$validator->errors()->all()]); 
}