小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【轉(zhuǎn)】CKeditor粘貼圖片在IE下自動(dòng)上傳的研究

 cathy001 2015-07-17

FCKeditor升級(jí)到3.0版本,并改名為CKeditor(Content And Knowledge),是全球最優(yōu)秀的網(wǎng)頁(yè)在線文字編輯器之一,因其驚人的性能與可擴(kuò)展性而廣泛的被運(yùn)用于各大網(wǎng)站。相信各位都有用過。

在開發(fā)教育系統(tǒng)時(shí)候,很多需求需要用到富文本編輯器,我們首選也是CKeditor(國(guó)產(chǎn)的KindEditor也是一個(gè)不錯(cuò)的選擇)。在探索教育系統(tǒng)時(shí),教師是最需要考慮的用戶之一,而教師往往會(huì)有大量word文檔,往往會(huì)直接復(fù)制word內(nèi)容粘貼到富文本編輯器提交內(nèi)容。用過CKeditor會(huì)知道,如果word帶有圖片,粘貼到富文本編輯器里面是看不到圖片的。

本文就是研究CKeditor粘貼圖片在IE下自動(dòng)上傳的功能實(shí)現(xiàn)。

一、粘貼圖片內(nèi)容為什么不到圖片?

打開CKeditor的官網(wǎng)演示頁(yè)面(http:///demo)。打開一個(gè)word文檔,復(fù)制文檔中有圖片和文字部分??聪聢D:

【轉(zhuǎn)】CKeditor粘貼圖片在IE下自動(dòng)上傳的研究 - .w.elLs black humor - .w.elLs black humor

粘貼到CKeditor編輯器里面,卻是顯示不出圖片,看下圖:

【轉(zhuǎn)】CKeditor粘貼圖片在IE下自動(dòng)上傳的研究 - .w.elLs black humor - .w.elLs black humor

查看CKeditor里面的源碼可以看到,圖片的<img>里面的資源鏈接都是本地機(jī)器上的圖片,沒有權(quán)限讀取本地的圖片,提交后,此圖片鏈接也是向本地的,不是互聯(lián)網(wǎng)上的圖片,這就是永遠(yuǎn)也看不到圖片了:

【轉(zhuǎn)】CKeditor粘貼圖片在IE下自動(dòng)上傳的研究 - .w.elLs black humor - .w.elLs black humor

 

二、解決方案

1.借助IE的ActiveX插件把本地圖片轉(zhuǎn)換長(zhǎng)BASE64碼

2.編寫CKeditor插件,取用ajax技術(shù)自動(dòng)提交BASE64碼到后臺(tái),后臺(tái)獲取BASE64碼后轉(zhuǎn)換成圖片存儲(chǔ)在服務(wù)器上,并返回?cái)?shù)據(jù)到插件并把網(wǎng)絡(luò)圖片的URL替換原來的指向本地圖片的地址。

三、實(shí)現(xiàn)的技術(shù)細(xì)節(jié)

ActiveX作用

ActiveX的作用,就是提供一個(gè)方法,將圖片轉(zhuǎn)換成Base64編碼,前端JavaScript會(huì)調(diào)用此方法;ActiveX中核心方法是:

public string ImageToBase64(string ImagePath);

編寫CKeditor插件

此插件會(huì)檢測(cè)到粘貼動(dòng)作,并判斷粘貼的內(nèi)容是否存放本地圖片,如果存在就進(jìn)行處理。JavaScript調(diào)用ActiveX插件的轉(zhuǎn)換方法,把本地圖片轉(zhuǎn)換成BASE64碼,并通過ajax提交到后臺(tái);后臺(tái)返回真實(shí)的網(wǎng)絡(luò)圖片地址,插件會(huì)替換掉編輯器里面原本地圖片的連接??创a片斷:

/* * CKEDITOR plugin pasteuploadpic 1.0 released * SITE: http:// * AUTHOR: Jacken(陳文光) * MAIL: chenjacken@gmail.com */// 處理粘貼內(nèi)容var pasteService =function(evt){// 所見即所得模式,其他模式就退出if(this.mode!='wysiwyg')return;var data = evt.data['html'];// 處理html內(nèi)容if(!data)return;// 檢測(cè)本地文件地址的正則表達(dá)式var localImgReg =//ig;   var imgArray = data.match(localImgReg);// 是否有本地圖片URLif(imgArray){// 上傳并處理編輯器內(nèi)容 replaceEditor(uoloadPic(imgArray));   }  };if(pasteuploadpic_url){// 監(jiān)聽事件 editor.on('paste', pasteService,null,null,1000);}/** * 配置處理圖片上傳的后臺(tái)地址,如果不配置,此插件不會(huì)啟用. * * @name CKEDITOR.config.pasteuploadpic_url * @type String * @default null * @since 1.0 * @example config.pasteuploadpic_url='/ckeditorAction_upload.action'; *//** * 配置ActiveXObject名稱 * * @name CKEDITOR.config.pasteuploadpic_axo * @type String * @default 'Jacken.Word' * @since 1.0 * @example config.pasteuploadpic_axo='/Jacken.Word'; */

后臺(tái)如何處理BASE64

需要編寫后臺(tái)程序來獲取BASE64碼并轉(zhuǎn)換成圖片,保存到服務(wù)器,獲得圖片的網(wǎng)絡(luò)絕對(duì)地址,并替換原編輯器內(nèi)容的圖片src。

Java用sun.misc.BASE64Decoder().decodeBuffer(String str)來獎(jiǎng)Base64圖片編碼轉(zhuǎn)換成字節(jié)。

PHP用base64_ decoder()。

四、已完成的功能和不足之處

在IE下借助ActiveX的功能,本人已經(jīng)完成了粘貼圖片到CKeditor,圖片會(huì)自動(dòng)上傳功能。

完成ActiveX的程序;

完成CKeditor插件的編寫(插件式,不影響升級(jí)CKeditor);

完成JAVA的J2EE后臺(tái)處理BASE64碼的轉(zhuǎn)換,因?yàn)槔蠋煏?huì)多次復(fù)制和粘貼同一樣內(nèi)容,所以圖片文件的存儲(chǔ)會(huì)一定的壓力,已經(jīng)完成對(duì)文件進(jìn)行MD5唯一性驗(yàn)證,同一樣圖片服務(wù)器上只存在一個(gè)實(shí)體圖片文件。

此實(shí)現(xiàn)思路可以在其他的富文本編輯器下實(shí)現(xiàn),只是編寫不同的編輯器插件。

不足之處

必須要在IE下起作用,且必須安裝ActiveX插件并允許執(zhí)行。

其他瀏覽器暫時(shí)不能使用此方案。

似乎只能通過復(fù)雜word里面的內(nèi)容粘貼才會(huì)響應(yīng)上傳。用QQ等直接截圖后粘貼不了…..

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多