这是一个简单的选项,可以使用 Plupload 直接从工具栏按钮从 TinyMCE 上传图像,而无需额外的弹出窗口。注意 - 这允许您使用文件选择器选择文件,但不支持拖放。
向 tinymce 添加一个 ID 为“mybutton”且无点击事件的按钮:
tinymce.init({selector:'.use-tinymce',
plugins: "code link visualblocks",
menubar: false,
extended_valid_elements : "span[!class]",
toolbar: "undo redo | formatselect | link code | mybutton",
visualblocks_default_state: true,
setup: function(editor) {
editor.addButton('mybutton', {
type: 'button',
title: 'Insert image',
icon: 'image',
id: 'mybutton'
});
editor.on('init', function(e) {
var pluploadHandler = new PluploadHandler(jQuery, plupload);
});
}
});
在 Plupload 初始化中引用这个按钮:
var PluploadHandler = function( $, plupload ) {
...
this.uploader = new plupload.Uploader({
runtimes : 'html5,flash,silverlight,html4',
browse_button : document.getElementById('mybutton'),
url : '/path/to/upload/the/image',
您需要为上传路径编写服务器端代码/path/to/upload/the/image
以保存图像并使用新图像的 URL 响应。
最后捕获上传的响应并将您的图像标签添加到 TinyMCE:
this.uploader.init();
this.uploader.bind("FilesAdded", handlePluploadFilesAdded);
this.uploader.bind("FileUploaded", handlePluploadFileUploaded);
function handlePluploadFilesAdded(up, files) {
console.log("+ handlePluploadFilesAdded");
up.start();
}
function handlePluploadFileUploaded(up, file, res) {
console.log("++ res.response: " + JSON.stringify(res.response));
var img = "<img src='" + res.response + "?" + Date.now() + "'>";
tinymce.activeEditor.execCommand('mceInsertContent', false, img);
}
}
完整的源代码在这里(在 TinyMCE 4.1.9 上测试;Plupload 2.1.2):
https ://gist.github.com/danielflippance/e1599fd58ada73b56bfb