下面是使用Plupload直接從工具欄按鈕從TinyMCE上傳圖像的簡單選項,無需額外的彈出窗口。注意 - 這允許您使用文件選擇器選擇文件,但不支持拖放操作。
添加一個按鈕,一個ID爲 'myButton的' 無點擊事件在TinyMCE:
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
我用的CKEditor具有CKFinder作爲一個非自由除處理媒體的是一種選擇爲你? – gunnx
U可能使用eMinder插件for tinyMCE:https://www.google.ru/search?q=tinymce+elfinder – Sergey
@gunnx非免費代碼可能是一個選項,具體取決於整合時間和成本。我會將其作爲一個選項進行檢查。 – ppp