當前位置:編程學習大全網 - 源碼下載 - extjs 3.4中 怎麽給htmlEdit添加圖片插件 實現圖片上傳功能

extjs 3.4中 怎麽給htmlEdit添加圖片插件 實現圖片上傳功能

首先要使用extjs自帶的HTMLEditor,然後在原有的工具條上添加壹個圖片按鈕,點擊這個圖片按鈕要彈出窗口,這個窗口負責實現上傳功能,實現上傳後,要將上傳的圖片路徑添加到?HTMLEditor?的光標處,並且要以<IMG></IMG>的方式,這樣?HTMLEditor?才能解析出來。實現代碼如下:

前臺JSP頁面

fieldLabel : '商品特性',

id : 'shopSp.spTxms',?

name : 'shopSp.spTxms',

xtype : 'StarHtmleditor',

anchor : '93%'

這其中引用了StarHtmleditor,StarHtmleditor.js的代碼如下,直接將代碼復制下來,然後新建個JS,全復制進去就行了。

var HTMLEditor = Ext.extend(Ext.form.HtmlEditor, {

addImage : function() {

var editor = this;

var imgform = new Ext.FormPanel({

region : 'center',

labelWidth : 55,

frame : true,

bodyStyle : 'padding:5px 5px 0',

autoScroll : true,

border : false,

fileUpload : true,

items : [{

xtype : 'textfield',

fieldLabel : '選擇文件',

id : 'UserFile',

name : 'UserFile',

inputType : 'file',

allowBlank : false,

blankText : '文件不能為空',

anchor : '90%'

}],

buttons : [{

text : '上傳',

handler : function() {

if (!imgform.form.isValid()) {return;}

imgform.form.submit({

waitMsg : '正在上傳......',

url : 'HTMLEditorAddImgCommonAction.action',

success : function(form, action) {

var element = document.createElement("img");

element.src = action.result.fileURL;

if (Ext.isIE) {

editor.insertAtCursor(element.outerHTML);

} else {

var selection = editor.win.getSelection();

if (!selection.isCollapsed) {

selection.deleteFromDocument();

}

selection.getRangeAt(0).insertNode(element);

}

//win.hide();//原始方法,但只能傳壹個圖片

//更新後的方法

form.reset();

win.close();

},

failure : function(form, action) {

form.reset();

if (action.failureType == Ext.form.Action.SERVER_INVALID)

Ext.MessageBox.alert('警告','上傳失敗',action.result.errors.msg);

}

});

}

}, {

text : '關閉',

handler : function() {

win.close(this);

}

}]

})

var win = new Ext.Window({

title : "上傳圖片",

width : 300,

height : 200,

modal : true,

border : false,

iconCls : "picture.png",

layout : "fit",

items : imgform

});

win.show();

},

createToolbar : function(editor) {

HTMLEditor.superclass.createToolbar.call(this, editor);

this.tb.insertButton(16, {

cls : "x-btn-icon",

icon : "picture.png",

handler : this.addImage,

scope : this

});

}

});

Ext.reg('StarHtmleditor', HTMLEditor);

JS的第壹句?var HTMLEditor = Ext.extend(Ext.form.HtmlEditor, 網上是沒有var的,不用var不知道為什麽總是報錯,另外JS壹定要與JSP的編碼方式壹致,要不然報莫名其妙的錯誤,而且錯誤都沒有顯示。

後臺java代碼

/****

* HTMLEditor增加上傳圖片功能:

* 1、上傳圖片後,需要將圖片的位置及圖片的名稱返回給前臺HTMLEditor

* 2、前臺HTMLEditor根據返回的值將圖片顯示出來

* 3、進行統壹保存

* @param 上傳圖片功能

* @return JSON結果

* @throws IOException

*/

public void HTMLEditorAddImg() throws IOException {

if(!"".equals(UserFile) && UserFile != null && UserFile.length() > 0){

File path = ImportImg(UserFile, "jpg");

UserFilePath = "../" + path.toString().replaceAll("\\\\", "/").substring(path.toString().replaceAll("\\\\", "/").indexOf("FileImg"));

}

this.getResponse().setContentType("text/html");

this.getResponse().getWriter().write("{success:'true',fileURL:'" + UserFilePath + "'}");

}

特別要註意的是路徑問題,路徑問題主要有2點需要註意:

1、前臺頁面引用?StarHtmleditor.js?的路徑壹定要正確;

2、?Htmleditor上傳的圖片路徑壹定要改,因為上傳之後圖片路徑變為Address inet = InetAddress.getLocalHost();

shopSp.setSpTxms(shopSp.getSpTxms().replace("localhost", inet.getHostAddress().toString()));

這樣基本就完成了這個HTMLEditor上傳圖片功能。

如圖:

  • 上一篇:星三角啟動時間計算公式是什麽?
  • 下一篇:小學生愛國主義教育活動有哪些?
  • copyright 2024編程學習大全網