Summernote 显示已上传到文件夹的图像

Summernote Show Images that have been uploaded to a folder

我正在使用一个非常好的 Summernote 编辑器来创建一个小网络应用程序。 我没有对图像使用默认的内联 base64 代码,而是将图像存储在一个文件夹中。

我让那部分按预期工作。我可以单击 "image" 图标和 select 图像,它会以原始类型(jpg、png、gif)将其上传到我服务器上的文件夹。

问题是即使图像正确上传,Summernote 也没有将它添加到编辑器中...所以它不显示。

这是我正在使用的相关代码:

    $(function() {
     $('.summernote').summernote({
      lang: 'en-EN',
      height: 500,
      onImageUpload: function(files, editor, $editable) {
      sendFile(files[0],editor,$editable);
      }  

    });
    function sendFile(file,editor,welEditable) {
      data = new FormData();
      data.append("file", file);
       $.ajax({
       url: "uploader.php",
       data: data,
       cache: false,
       contentType: false,
       processData: false,
       type: 'POST',
       success: function(data){
       alert(data);
        editor.insertImage(welEditable, data);
    },
       error: function(jqXHR, textStatus, errorThrown) {
       console.log(textStatus+" "+errorThrown);
      }
    });
   }

  });

uploader.php 文件如下所示:

<?php
  // A list of permitted file extensions
    $allowed = array('png', 'jpg', 'gif','zip');

if(isset($_FILES['file']) && $_FILES['file']['error'] == 0){

$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);

if(!in_array(strtolower($extension), $allowed)){
    echo '{"status":"error"}';
    exit;
}

    if(move_uploaded_file($_FILES['file']['tmp_name'],
    'images/'.$_FILES['file']['name'])){
    $tmp='images/'.$_FILES['file']['name'];
    echo 'images/'.$_FILES['file']['name'];
    //echo '{"status":"success"}';
    exit;
    }
   }

echo '{"status":"error"}';
exit;
?>

关于 Summernote 编辑器为什么不在编辑器中显示保存(存储)的图像有什么想法吗?

谢谢

在新版本的 summernote 中,onImageUpload 回调仅使用 files 参数调用。这意味着 editor 不可用。

您可以插入一张图片:

$('.summernote').summernote("insertImage", url, filename);

你的情况:

$('.summernote').summernote("insertImage", data, 'filename');

我是用 codeigniter 做的,可能对某人有帮助。

 $(function() {
          $('.summernote').summernote({
              onImageUpload: function(files, editor, $editable) {
              sendFile(files[0],editor,$editable);
              }  
            });

           function sendFile(file,editor,welEditable) {
              data = new FormData();
              data.append("file", file);
               $.ajax({
               url: "http://localhost/fourm/media/editorupload",
               data: data,
               cache: false,
               contentType: false,
               processData: false,
               type: 'POST',
               success: function(data){  
                editor.insertImage(welEditable, data);              
            },
               error: function(jqXHR, textStatus, errorThrown) {
               console.log(textStatus+" "+errorThrown);
              }
            });
           }
    });

您必须使用"callbacks: {}"方法。像这样:

$('.summernote').summernote({
    height: 500,
    tabsize: 4,
    callbacks: {
        onImageUpload: function(files, editor, $editable) {
            console.log('onImageUpload');
            sendFile(files[0],editor,$editable);
        }
    }});