
点击浏览弹出选择文件

?
确定后:
?

?呵呵不错啊
代码如下:
?
Ext.ui.ImageUploadField = Ext.extend(Ext.form.TextField, {
autoCreate : {
cls : 'x-form-field-wrap x-form-file-wrap',
style : 'position:relative;height:auto;'
},
setValue : function(new_value) {
this.value = new_value;
if (this.rendered) {
if (new_value == undefined || new_value == null) {
this.img.dom.src = this.defaultUrl || Ext.BLANK_IMAGE_URL;
} else {
this.img.dom.src = new_value;
}
this.img.on("load", function() {
this.fireEvent("imgload");
}, this, {
single : true
});
}
},
initComponent : function() {
Ext.ui.ImageUploadField.superclass.initComponent.apply(this, arguments);
var me = this;
this.on("imgload", function() {
this.reAlign();
});
},
initValue : function() {
this.setValue(this.value);
},
getValue : function() {
return this.fileField.dom.value;
},
getRawValue : function() {
return this.fileField.dom.value;
},
reAlign : function() {
this.button.el.anchorTo(this.el, "r-r");
this.fileField.anchorTo(this.el, "r-r");
},
onRender : function(ct) {
Ext.ui.ImageUploadField.superclass.onRender.apply(this, arguments);
this.img = this.el.createChild({
tag : 'img',
src : Ext.BLANK_IMAGE_URL,
height : this.imgHeight || 50,
style : 'border:1px solid #cfcfcf;'
});
this.img.on("load", function() {
this.fireEvent("imgload");
}, this, {
single : true
})
this.fileField = this.el.createChild({
tag : 'input',
type : 'file',
style : 'position: absolute;right: 0;-moz-opacity: 0;filter:alpha(opacity: 0);opacity: 0;z-index: 2;z-index:999;',
name : this.name
});
var btnCfg = this.buttonConfig || {};
this.button = new Ext.Button(Ext.apply(btnCfg, {
renderTo : this.el,
text : btnCfg.text || '浏览',
cls : 'x-form-file-btn' + (btnCfg.iconCls ? ' x-btn-icon' : '')
}));
this.button.el.setStyle("position", "absolute");
this.reAlign();
this.fileField.on({
scope : this,
change : function() {
this.setValue(this.getFileFieldValue());
this.fireEvent('fileselected', this, this.getFileFieldValue());
}
});
},
// 得到浏览器版本
getOs : function() {
var OsObject = "";
if (navigator.userAgent.indexOf("MSIE") > 0) {
return "MSIE";
}
if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
return "Firefox";
}
if (isSafari = navigator.userAgent.indexOf("Safari") > 0) {
return "Safari";
}
if (isCamino = navigator.userAgent.indexOf("Camino") > 0) {
return "Camino";
}
if (isMozilla = navigator.userAgent.indexOf("Gecko/") > 0) {
return "Gecko";
}
},
getFileFieldValue : function() {
// IE浏览器获取图片路径
function getImgUrlByMSIE(fileid) {
return document.getElementById(fileid).value;
}
// 非IE浏览器获取图片路径
function getImgUrlByUnMSIE(fileid) {
var f = document.getElementById(fileid).files[0];
return window.URL.createObjectURL(f);
}
var imgsrc = "";
var fid = this.fileField.id;
if ("MSIE" == this.getOs()) {
imgsrc = getImgUrlByMSIE(fid);
} else {
imgsrc = getImgUrlByUnMSIE(fid);
}
return imgsrc;
},
setImgWidth : function(w) {
if (w) {
this.img.setWidth(w);
}
},
setWidth : function(w) {
this.setImgWidth(w);
Ext.ui.ImageUploadField.superclass.setWidth.apply(this, arguments);
},
setSize : function(w, h) {
// support for standard size objects
if (typeof w == 'object') {
h = w.height;
w = w.width;
}
Ext.ui.ImageUploadField.superclass.setSize.apply(this, arguments);
this.reAlign();
this.setImgWidth(w);
}
});
Ext.reg('imageuploadfield', Ext.ui.Imag