1. 程式人生 > >Ueditor拖拽圖片轉base64

Ueditor拖拽圖片轉base64

ueditor 中拖拽圖片,預設的是會上傳到伺服器,然後根據伺服器返回的結果來生成一般的<img>標籤。

那麼我需要實現拖拽圖片,生成的是srcData形式的<img>標籤。

1、在uedit的初始化引數中增加一個做 convertImageToBase64Enable。用來控制是按照原來的方式上傳還是用轉換成base64的形式來處理圖片。

2、修改autoupload.js程式碼,重新編譯打包;或者修改umeditor.js中對應位置程式碼。

改動點只有2處(以autoupload.js為例):

a:增加了一個insertBase64Image 的 function。 第15行處

b:根據convertImageToBase64Enable引數來判斷對圖片的處理是上傳還是轉Base64。第71行處

autoupload.js:

/**
 * @description
 * 1.拖放檔案到編輯區域,自動上傳並插入到選區
 * 2.插入貼上板的圖片,自動上傳並插入到選區
 * @author Jinqn
 * @date 2013-10-14
 */
UM.plugins['autoupload'] = function () {

    var me = this;

    me.setOpt('pasteImageEnabled', true);
    me.setOpt('dropFileEnabled', true);

    var insertBase64Image = function (file, editor) {
        var reader = new FileReader();
        reader.onload = function (e) {
            editor.execCommand('insertimage', {
                src: this.result,
                _src: this.result
            });
        };
        reader.readAsDataURL(file);
    }

    var sendAndInsertImage = function (file, editor) {
        //模擬資料
        var fd = new FormData();
        fd.append(editor.options.imageFieldName || 'upfile', file, file.name || ('blob.' + file.type.substr('image/'.length)));
        fd.append('type', 'ajax');
        var xhr = new XMLHttpRequest();
        xhr.open("post", me.options.imageUrl, true);
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        xhr.addEventListener('load', function (e) {
            try {
                var json = eval('(' + e.target.response + ')'),
                    link = json.url,
                    picLink = me.options.imagePath + link;
                editor.execCommand('insertimage', {
                    src: picLink,
                    _src: picLink
                });
            } catch (er) {
            }
        });
        xhr.send(fd);
    };

    function getPasteImage(e) {
        return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items : null;
    }

    function getDropImage(e) {
        return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null;
    }

    me.addListener('ready', function () {
        if (window.FormData && window.FileReader) {
            var autoUploadHandler = function (e) {
                var hasImg = false,
                    items;
                //獲取貼上板檔案列表或者拖放檔案列表
                items = e.type == 'paste' ? getPasteImage(e.originalEvent) : getDropImage(e.originalEvent);
                if (items) {
                    var len = items.length,
                        file;
                    while (len--) {
                        file = items[len];
                        if (file.getAsFile) file = file.getAsFile();
                        if (file && file.size > 0 && /image\/\w+/i.test(file.type)) {
                            me.getOpt('convertImageToBase64Enable') ? insertBase64Image(file, me) : sendAndInsertImage(file, me);
                            hasImg = true;
                        }
                    }
                    if (hasImg) return false;
                }

            };
            me.getOpt('pasteImageEnabled') && me.$body.on('paste', autoUploadHandler);
            me.getOpt('dropFileEnabled') && me.$body.on('drop', autoUploadHandler);

            //取消拖放圖片時出現的文字游標位置提示
            me.$body.on('dragover', function (e) {
                if (e.originalEvent.dataTransfer.types[0] == 'Files') {
                    return false;
                }
            });
        }
    });

};

以下是autoupload.js的改動

相關推薦

Ueditor圖片base64

ueditor 中拖拽圖片,預設的是會上傳到伺服器,然後根據伺服器返回的結果來生成一般的<img>標籤。那麼我需要實現拖拽圖片,生成的是srcData形式的<img>標籤。1、在uedit的初始化引數中增加一個做 convertImageToBase6

圖片到另一個div裏

生效 用戶 ext 觸發 過程 fun ref ctype child HTML代碼 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

圖片小項目

可見 交換 如果 etl clas 事件 滾動條 height offset 1.布局 一個ul裏面放幾個li,li裏面放圖片,li要設置成absolute。 2.獲取數據 獲取每個li距瀏覽器頂部和左部距離並放入aPos數組中。 給每個li添加一個自定義屬性index,l

Jquery 多行圖片排序 jq優化

round pan lock ech att orm width app init <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>jQu

CSDN-----jquery圖片

JQuery實現拖拽DIV 之前實現的是以純javascript進行圖片拖拽,昨天發現做特效用jquery程式碼量減少了一倍多,實現拖拽的技術難點主要是在拖動結束點的控制,在放棄選擇拖拽目標時要準確的將事件清除掉,否則就會出現滑鼠明明放棄拖拽,目標卻還在移動,學習的小夥伴們最好了解清楚bin

js 禁止右擊儲存圖片,禁止圖片

禁止滑鼠右鍵儲存圖片 <img src="" oncontextmenu="return false;"> 禁止滑鼠拖動圖片 <img src="" ondragstart="return false;"> 文字禁止滑鼠選中 <p onselectstart="ret

圖片調換順序

<!DOCTYPE html><html><head> <style> .row div { float: left; } #div1, #div2 { width: 100px; height: 100px; margin-left: 100px; }

iOS 圖片base64編碼

今天有人在群裡問,圖片怎麼轉成base64編碼?那我就在這裡說一說 其實圖片轉成base64編碼,很簡單,蘋果提供了方法 //圖片轉base64 UIImage *image = [UIImage imageNamed:@"eg"]; NSData *data = UII

PPT_2010/2013/2016實現在演示過程中圖片/形狀

如果有需要在PPT演示過程中簡單拖拽一些元素的功能,那麼這篇文章絕對能幫助你    在上一篇文章分泌蛋白過程操作動畫中提及到實現PPT演示過程中拖拽元素的方法,這篇寫出詳細過程。    先說明幾點:    1、完成後的PPT必須儲存為字尾pptm,而不能是p

Qt 圖片到QLabel上並顯示

實現程式碼: #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDragEnterEvent> #include <QDropEvent> #include <QUrl&

js圖片base64

var reader = new FileReader() reader.readAsDataURL(file) reader.onload = function() { url= reader.result } onl

C# imgage圖片base64字元/base64字串圖片另存成

//圖片轉為base64編碼的字串 protected string ImgToBase64String(string Imagefilename) { try { Bitmap bmp = new Bitmap(Imagefilename);

前端實現圖片base64

使用canvas 新建個canvas標籤然後用css隱藏。之後獲取此canvas元素,使用toDataURL方法轉換。 12 var canvas=document.getElementById("xxxx");var base64=canvas.toDataU

js圖片base64編碼壓縮上傳

/** * 回撥函式 * @param image_base64 */ var callback = function(image

base64圖片 圖片base64

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/x

圖片Base64編碼 base64編碼圖片

這兩天給手機寫了幾個服務(介面形式),其他資料還好,圖片實在沒處理過,這裡記錄下使用base64編碼遇到的坑。。。。 1、圖片轉base64編碼: public static String getImageStr(String imgUrl) {//將圖片檔案轉化為位

js簡單的圖片base64

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>

PHP的圖片base64base64圖片轉換為圖片並儲存程式碼

打卡記錄 1. 圖片轉base64程式碼 /*圖片轉換為 base64格式編碼*/ $img = 'images/avatar.jpg'; $base64_img = base64EncodeImage($img); echo '<img src="' . $base64_img . '" /

c++ 實現圖片base64

原理:原因:網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ASCII碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖片二進位制流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議的情 況下,做一種擴充套

UE4 滑鼠圖片

1.設定一個小的UI(只有一張圖片),一個可以拖拽的東西,比如揹包裡的武器2.在這個ui中過載兩個方法(1)判斷滑鼠按下後是否有拖拽(2)拖拽過程中設定拖拽樣式3.在內容瀏覽器中建立藍圖(拖拽的樣式)4.在想要拖拽的UI中過載On Drop方法5.設定拖拽後放置的位置(為滑鼠