javascript - summernote js上传图片

标签 javascript php summernote

我使用的是 summernote 版本 0.8.1(当前)。

它正在工作。但是我挣扎的一件事。插入图片,而不是放 base64 dataURL,我想将图片上传到服务器并将图片 URL 插入数据库。这是我的代码:

<script>
$(document).ready(function() {
$('#summernote').summernote({
    lang: 'fr-FR',
    height: 300,
    toolbar : [
        ['style',['bold','italic','underline','clear']],
        ['font',['fontsize']],
        ['color',['color']],
        ['para',['ul','ol','paragraph']],
        ['link',['link']],
        ['picture',['picture']]
    ],
    onImageUpload: function(files, editor, welEditable) {
        for (var i = files.lenght - 1; i >= 0; i--) {
        sendFile(files[i], this);
        }
    }
});

function sendFile(file, el) {
    var form_data = new FormData();
    form_data.append('file',file);
    $.ajax ({
        data: form_data,
        type: "POST",
        url: "../up.php",
        cache: false,
        contentType: false,
        processData: false,
        success: function(url) {
            $(el).summernote('editor.insertImage',url);
            }
        })
    }

});
    </script>

我已经测试了脚本 up.php,它的作用是更改文件名并以“../photos/mypicture.jpg”的形式返回图像的 url。

上述代码的问题在于 ..up.php 似乎甚至没有被调用。我在 Firefox 开发工具中运行它,没有收到任何错误或警告。

最佳答案

我成功了。这是我的代码。使用 summernote 0.8.1,即当前版本。

<script>

$(document).ready(function() {

var IMAGE_PATH = 'http://www.path/to/document_root/';
                  // the exact folder in the document_root
                  // will be provided by php script below

$('#summernote').summernote({
    lang: 'fr-FR', // <= nobody is perfect :)
    height: 300,
    toolbar : [
        ['style',['bold','italic','underline','clear']],
        ['font',['fontsize']],
        ['color',['color']],
        ['para',['ul','ol','paragraph']],
        ['link',['link']],
        ['picture',['picture']]
    ],
    callbacks : {
        onImageUpload: function(image) {
            uploadImage(image[0]);
        }
    }
});

function uploadImage(image) {
    var data = new FormData();
    data.append("image",image);
    $.ajax ({
        data: data,
        type: "POST",
        url: "../up.php",// this file uploads the picture and 
                         // returns a chain containing the path
        cache: false,
        contentType: false,
        processData: false,
        success: function(url) {
            var image = IMAGE_PATH + url;
            $('#summernote').summernote("insertImage", image);
            },
            error: function(data) {
                console.log(data);
                }
        });
    }

});
</script>

这是我的 up.php :

<?php
require('admchir/nettoie.php'); 
      // nettoie.php removes the French special chars and spaces
$image = nettoie($_FILES['image']['name']);
$uploaddir = 'photos/';
      // that's the directory in the document_root where I put pics
$uploadfile = $uploaddir . basename($image);
if( move_uploaded_file($_FILES['image']['tmp_name'],$uploadfile)) {
    echo$uploadfile;
} else {
    echo "Lo kol kakh tov..."; // <= nobody is perfect :)
}
?>

从网上找这个,我的印象是summernote在各个版本之间变化很大,但没有找到当前版本的完整工作示例。希望这对某人有帮助。

关于javascript - summernote js上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709074/

相关文章:

javascript - Myscript 在我的本地主机上不工作,但如果在 jsfiddle 中就没问题

php 如何使用 json_decode 数组中的值?

Summernote 编辑器未在页面上初始化

javascript - 将javascript中的对象转换为json对象

javascript - 为什么 setTimeout 和 setInterval 在浏览器和 Node.js 中的工作方式不同?

php - MySQL-排序后插入行

javascript - Jquery 根本不工作,但其他 Javascript 代码运行

jquery - 获取 Summernote 元素的 ID

javascript - Summernote 在浏览器中输出代码而不是格式化文本

javascript - Sequelize 文档中的这些井号/井号符号代表什么?