将上传的图片插入到Summernote编辑器中

3

我的目标是将上传的图像(本地文件)插入到summernote编辑器中。

图像上传成功,只需要插入到编辑器中即可。

我试图在控制台记录编辑器实例,但它显示为未定义。 如果我可以将编辑器实例传递给sendFile函数,我认为问题将得到解决。

jsfiddle

$(document).ready(function () {

  $('.summernote').summernote({
    callbacks: {
     onImageUpload: function(files, editor, welEditable) {
      var url= sendFile(files[0], editor, welEditable);
    }
  },
  height: 300,
  focus: true,

});

  function sendFile(file, editor, welEditable) {
    data = new FormData();
    data.append("file", file);
    console.log(editor);
    /* $.ajax({
      data: data,
      type: "POST",
      url: "Test/test",
      cache: false,
      contentType: false,
      processData: false,
      success: function(url) {
        editor.insertImage(welEditable, url);
        console.log(url); //eg:https://server-url/assets/images/a8f15ed.jpg
      },
      error: function(jqXHR, stat, err){
        console.log(stat+':'+err);
      }
    }); */
  }
});
<head> 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.11/summernote-bs4.css" rel="stylesheet"/>

<script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.11/summernote-bs4.js"></script>
</head>


<div class="container">
  <div class="row">
    <div class="col-md-3">
      <div class="col-md-4">
        <div class="summernote"></div>
      </div>
    </div>
  </div>
</div>

2个回答

2
你可以尝试设置“text/html模式”。
注意:在onImageUpload回调中,没有editorwelEditable参数。

$(document).ready(function() {

  $('.summernote').summernote({
    height: 300,
    focus: true,
    codemirror: {
      mode: 'text/html',
    }
  });
  
});
<head>
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" />
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"></script>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.11/summernote-bs4.css" rel="stylesheet" />

  <script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.11/summernote-bs4.js"></script>
</head>


<div class="container">
  <div class="row">
    <div class="col-md-3">
      <div class="col-md-4">
        <div class="summernote"></div>
      </div>
    </div>
  </div>
</div>

更新: 在 Ajax 成功后,您可以通过以下方式插入图像:
// getting old html 
let html = $('.summernote').summernote('code'); 

// setting updated html with image url
$('.summernote').summernote('code', html + '<img src="' + url + '"/>'); 

我是从这里开始跟进的(https://github.com/summernote/summernote/issues/72#issuecomment-27676684) - LogicalAnt
@unreleased是在2013年发布的。但是您正在使用最新版本。 - User863
实际上,我需要通过ajax请求将图像上传到特定文件夹并将图像URL附加到编辑器。将图像转换为base64并附加到编辑器不会解决问题。如果您可以通过ajax请求保存图像,那对我会很有帮助。@Aswin Kumar - LogicalAnt
感谢@Aswin Kumar的支持。感谢您的时间,给你一个赞。我用一种略有不同的方式解决了这个问题 :) - LogicalAnt

2
在ajax成功后,我们可以通过以下方式将图片插入到编辑器实例中。
success: function(url) {
  $('#summernote').summernote("insertImage", url, 'filename');
},

不需要在 sendFile(file, editor, welEditable) 函数参数中插入到编辑器中。对于我的情况,这解决了问题。

有用的评论


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接