Laravel 5覆盖summernote图像上传

时间:2015-04-25 14:15:58

标签: php jquery laravel-5 image-upload summernote

我想用laravel 5方法ajax覆盖summernote中的图像上传,但是我无法让它工作。

这是我的php方法

public function ajaxImage()
{
    $file = Input::file('image');
    $destinationPath = public_path();
    $filename = $file->getClientOriginalName();
    if(Input::file('image')->move($destinationPath, $filename)) {
        echo $destinationPath.$filename;
    }
}

这是我的jquery代码:

$(document).ready(function(){
            $('#description').summernote({
                height: 300,

                onImageUpload: function(files, editor, welEditable) {
                    sendFile(files[0], editor, welEditable);
                }
            });
            function sendFile(file, editor, welEditable) {
                var  data = new FormData();
                data.append("file", file);
                var url = '/articles/ajaximage';
                $.ajax({
                    data: data,
                    type: "POST",
                    url: url,
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function(url) {
                        alert('Success');
                        editor.insertImage(welEditable, url);
                    }
                });
            }
        });

我在控制台中收到错误:

POST http://marcus.dev/articles/ajaximage 500(内部服务器错误)

2 个答案:

答案 0 :(得分:2)

我发现了......它是一个 " VerifyCsrfToken中的TokenMismatchException" 问题

来源:http://laravel.io/forum/01-30-2015-laravel5-tokenmismatchexception-in-verifycsrftoken

我在主视图的标题中添加了这个:

<meta name="csrf-token" content="{{ csrf_token() }}" />

,这在document.ready

之前的脚本中
$.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

最后是php方法:

Route::post('ajaximage', function(){

$file = Request::file('file');
$destinationPath = public_path().'/uploads/';
$filename = $file->getClientOriginalName();
$file->move($destinationPath, $filename);
echo url().'/uploads/'.$filename;

});

答案 1 :(得分:2)

对于summernote版本0.6.9,我们不能再在回调函数中使用编辑器了。

而不是

editor.insertImage(welEditable, url);

我用过

$('#summernote').summernote('editor.insertImage', url);

我不知道是否有更干净的版本,但它似乎有效。