图片上传到 Summernote 编辑器中的文件夹

Posted

技术标签:

【中文标题】图片上传到 Summernote 编辑器中的文件夹【英文标题】:Images upload to folder in Summernote editor 【发布时间】:2016-02-18 15:43:15 【问题描述】:

我有 asp.net mvc 4 应用程序。在那个应用程序中我有表单,在那个表单中我有summernote富文本编辑器。但是在这个编辑器中,我可以选择将图像上传到这个编辑器。

但是,一旦我填写了其余字段并提交了此表格。它没有保存我通过summernote编辑器上传的图像。

我想将图片上传到以下路径~/Content/Images/

并在数据库字段中保持路径为~/Content/Images/Image_Name.JPG

所以我尝试通过关注this solution 和 GitHub Issue reported here 来创建我的解决方案

来自浏览页面

<div class="form-group">
 @html.TextAreaFor(m => m.Field_Value, new  @class = "form-control summernote")
</div>

控制器方法

    [HttpPost]
    public byte[] UploadImage(HttpPostedFileBase file)
    
        Stream fileStream = file.InputStream;
        var mStreamer = new MemoryStream();
        mStreamer.SetLength(fileStream.Length);
        fileStream.Read(mStreamer.GetBuffer(), 0, (int)fileStream.Length);
        mStreamer.Seek(0, SeekOrigin.Begin);
        byte[] fileBytes = mStreamer.GetBuffer();
        Stream stream = new MemoryStream(fileBytes);

        //string result = System.Text.Encoding.UTF8.GetString(fileBytes);
        var img = Bitmap.FromStream(stream);
        Directory.CreateDirectory("~//Content//Images//" + img);
        return fileBytes;

    

这是脚本

<script type="text/javascript">
$('.summernote').summernote(
    height: 200,   // set editable area's height
    focus: true,   // set focus editable area after Initialize summernote
    onImageUpload: function (files, editor, welEditable) 
        var formData = new FormData();
        formData.append("file", files[0]);

        $.ajax(
            url: "@Url.Action("Home", "UploadImage")",
            data: formData,
            type: 'POST',
            cache: false,
            contentType: false,
            processData: false,
            success: function (imageUrl) 
                if (!imageUrl) 
                    debugger;
                    // handle error
                    return;
                
                editor.insertImage($editable, imageUrl);
            ,
            error: function () 
                // handle error
            
        ); 
    
);

这也是一次,它根本不显示图像是否上传到编辑器

【问题讨论】:

【参考方案1】:

我更新了你的脚本,它对我有用(检查代码 cmets 上的更改):

<script type="text/javascript">
var editor =  // 1st change: will need this variable later
$('.summernote').summernote(
    height: 200,   
    focus: true,   
    callbacks:  // 2nd change - onImageUpload inside of "callbacks"
      onImageUpload: function (files)  // 3rd change - dont need other params
        var formData = new FormData();
        formData.append("file", files[0]);

        $.ajax(
            url: "@Url.Action("Home", "UploadImage")",
            data: formData,
            type: 'POST',
            cache: false,
            contentType: false,
            processData: false,
            success: function (imageUrl) 
                if (!imageUrl) 
                    // handle error
                    return;
                
                // 4th change - create img element and add to document
                var imgNode = document.createElement('img');
                imgNode.src = imageUrl;
                editor.summernote('insertNode', imgNode);
            ,
            error: function () 
                // handle error
            
        );
       
    
);
</script>

【讨论】:

以上是关于图片上传到 Summernote 编辑器中的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

将上传的图片插入summernote编辑器

summernote vue html编辑器不会将图像上传到服务器

summernote 上传图片到 s3 (asp.net)

在summernote上传的图片之间插入br标签

Summernote 编辑器 - 上传后无法查看图像

Laravel 5 和 Summernote - 上传的图片未显示