tinymce是一款挺不錯的html文本編輯器。但是添加圖片是直接添加鏈接,不能直接選擇本地圖片。
下面我寫了一個插件用於直接上傳本地圖片。
在tinymce的plugins目錄下新建一個uploadimage目錄,用於存放我新寫的上傳本地圖片的插件。
下面看看plugin.js文件的具體內容。
/** * tinymce plugin * Created by jerry on 16/8/5. */ tinymce.PluginManager.add('uploadimage', function (editor) { function selectLocalImages() { var dom = editor.dom; var input_f = $('<input type="file" name="thumbnail" accept="image/jpg,image/jpeg,image/png,image/gif" multiple="multiple">'); input_f.on('change', function () { var form = $("<form/>", { action: editor.settings.upload_image_url, //設置上傳圖片的路由,配置在初始化時 style: 'display:none', method: 'post', enctype: 'multipart/form-data' } ); form.append(input_f); //ajax提交表單 form.ajaxSubmit({ beforeSubmit: function () { return true; }, success: function (data) { if (data && data.file_path) { editor.focus(); data.file_path.forEach(function (src) { editor.selection.setContent(dom.createHTML('img', {src: src})); }) } } }); }); input_f.click(); } editor.addCommand("mceUploadImageEditor", selectLocalImages); editor.addButton('uploadimage', { icon: 'image', tooltip: '上傳圖片', onclick: selectLocalImages }); editor.addMenuItem('uploadimage', { icon: 'image', text: '上傳圖片', context: 'tools', onclick: selectLocalImages }); });
下面是組件初始化js代碼:
tinymce.init({ selector: "textarea[data-provide='tinymce']", upload_image_url: '/upload/cloud', //配置的上傳圖片的路由 height: 400, plugins: [ 'advlist autolink autosave lists link image charmap print preview anchor', 'searchreplace visualblocks code fullscreen textcolor colorpicker textpattern code uploadimage', 'contextmenu paste' ], toolbar1: "undo redo | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | fontselect fontsizeselect ", toolbar2: "forecolor backcolor | bullist numlist | outdent indent | removeformat | link unlink uploadimage | preview fullscreen ", menubar: false, //statusbar : false, content_css: [ '/style/tinymce.css' ] //參考網站 https://www.tinymce.com/ });
現在運行編輯器菜單如下:
點擊圖片小圖標就可以從本地選擇圖片上傳了。