Laravel 5 覆盖summernote 图片上传

Posted

技术标签:

【中文标题】Laravel 5 覆盖summernote 图片上传【英文标题】:Laravel 5 override summernote Image upload 【发布时间】:2015-07-04 04:02:18 【问题描述】:

我想用 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(内部服务器错误)

【问题讨论】:

找到您的解决方案 .... somrat.info/summarnote-image-upload-with-laravel 请不要在问题标题中添加已解决 【参考方案1】:

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

而不是

editor.insertImage(welEditable, url);

我用过

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

我不知道是否有更清洁的版本,但它似乎可以工作。

【讨论】:

对于summernote v0.8.11,正确的代码是:$('#summernote').summernote('insertImage', url);documentation。另请注意,onImageInsert 现在需要位于 callbacks 对象内:$('#summernote').summernote( callbacks: onImageInsert: ... );【参考方案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;
    );

【讨论】:

以上是关于Laravel 5 覆盖summernote 图片上传的主要内容,如果未能解决你的问题,请参考以下文章

Summernote 显示在所有位置(Laravel 5.2)

Summernote 编辑器未打开(laravel 5.2)

如何在 laravel 5 中插入和更新图像 Summernote

Summernote(数据未保存在数据库中)(laravel 5.2)

Summernote 所见即所得编辑器无法使用 Laravel 5.8 正确呈现数据

在 Laravel 5 中链接 Css 和 Js 文件 Summernote 资产的正确方法