先引用js和css
<link type="text/css" rel="stylesheet" href="../../resources/css/ext-all.css" /> <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script> <script type="text/javascript" src="../../ext-all.js"></script>
?然后复写样式表:
<style type="text/css">
.tabs {
background-image:url("../desktop/images/tabs.gif") !important;
}
.ux-lovcombo-icon {
width:16px;
height:16px;
float:left;
background-position: -1px -1px ! important;
background-repeat:no-repeat ! important;
}
.ux-lovcombo-icon-checked {
background: transparent url(../ext/resources/images/default/menu/checked.gif);
}
.ux-lovcombo-icon-unchecked {
background: transparent url(../ext/resources/images/default/menu/unchecked.gif);
}
</style>
?然后写ext脚本引用弹出窗口
<script type="text/javascript">
var i = 0;
var currentField;
//上传form
var uploadForm = new Ext.form.FormPanel({
baseCls : 'x-plain',
labelWidth : 80,
// layout:'fit',
autoHeight:true,
style:'margin-top:10',
frame : true,
disabledClass : "x-item-disabled",
tbar : [{
xtype : 'button',
text : '添加上传',
labelAlign : 'right',
icon : "image/add_16.gif",
handler : function() {
var uf = getUploadField();
uploadForm.add(uf);
uploadForm.doLayout(true);
upload_win.setHeight(upload_win.getHeight() + 47);
}
}, {
xtype : 'label',
text : '(单个最大允许上传50M)'
}],
//url : '',//__jadPath + '/sm/fileUploadAction!fileUpLoad.action',
fileUpload : true,
defaultType : 'textfield',
items : [getUploadField()]
});
//alert(__jadPath);
function getUploadField(callFun) {//增加一行文件框
var fileName = "文件 " + (++i) + " : ";
var uploadFileTf = new Ext.form.TextField({
xtype : 'textfield',
columnWidth : .7,
name : 'file',
inputType : 'file',
allowBlank : false,
blankText : '请选择上传文件',
anchor : '90%'
});
var lbl = new Ext.form.Label({
text : fileName,
columnWidth : .15,
style : 'font-weight:bold;vertical-align: middle'
});
var fieldSet = new Ext.form.FieldSet({
layout : 'column',
border : false
});
fieldSet.add(lbl);
fieldSet.add(uploadFileTf);
if (i != 1) {
var deleteBtn = new Ext.Button({
text : '删除',
icon : "image/remove.png",
columnWidth : .15,
handler : function() {
fieldSet.destroy();
upload_win.setHeight(upload_win.getHeight() - 37);
uploadForm.doLayout(true);
}
});
fieldSet.add(deleteBtn);
}
return fieldSet;
}
var upload_win = new Ext.Window({
title: '文件上传',
width: 500,
layout: 'fit',
plain: true,
bodyStyle : 'padding:5px;',
buttonAlign : 'center',
items: uploadForm,
resizable : false,
closeAction : 'close',
iconCls: 'tabs',
loadMask : true,
autoHeight: true,
height:160,
buttons : [{
text : '开始上传',
icon : "image/upload.png",
handler : function() {
if (uploadForm.form.isValid()) {
Ext.MessageBox.show({
title : 'Please wait',
msg : '上传中...',
progressText : '- - - -上传中- - - -',
width : 300,
progress : true,
closable : false,
animEl : 'loding'
});
uploadForm.getForm().submit({
url : '/uploadFileAttach.action',
success : function(form, action) {
var result = Ext.util.JSON.decode(action.response.responseText);
Ext.Msg.alert('信息提示', result.message);
var fn = callFunc.createCallback(result);
fn();
upload_win.hide();
},
failure : function() {
Ext.Msg.alert('信息提示', '文件上传失败');
upload_win.show();
}
})
}
}
}, {
text : '关闭',
icon : "image/btn-cancel.png",
handler : function() {
upload_win.hide();
}
}]
});
upload_win.show();
</script>
后台Java处理代码:
/**
* 文件上传
* @return
*/
public String upload() {
File uploadFileDir = new File(ServletActionContext.getServletContext().getRealPath(Constants.FILE_ATTACH_PATH+"/"+fileType));
if (!uploadFileDir.exists())
uploadFileDir.mkdirs();
SimpleDateFormat sdFormat = new SimpleDateFormat("yyyyMMddhhmmssSSS");
int i = 0;
List<FileAttach> listFile = new ArrayList<FileAttach>();
for (File fileItem : file) {
// 原文件名
String oldFileName = fileFileName.get(i++);
// 新文件名
String newFileName = sdFormat.format(new Date()) + i;
// 文件后缀
String suffix = null;
int index = oldFileName.lastIndexOf('.');
if (-1 != index) {
suffix = oldFileName.substring(index + 1, oldFileName.length());
newFileName += "." + suffix;
}
InputStream bis = null;
OutputStream bos = null;
try {
FileInputStream fs = new FileInputStream(fileItem);
bis = new BufferedInputStream(fs);
bos = new BufferedOutputStream(new FileOutputStream(new File(
uploadFileDir, newFileName)));
byte[] buf = new byte[4096];
int len = -1;
while ((len = bis.read(buf)) != -1) {
bos.write(buf, 0, len);
}
bos.flush();
} catch (Exception e) {
outJson("{success:false,message:'文件上传失败'}");
e.printStackTrace();
return null;
} finally {
try {
if (null != bos)
bos.close();
if (null != bis)
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
FileAttach file = file = new FileAttach();
file.setCreateDate(new Date());
file.setCreator("UNKown");
file.setExt(suffix);
file.setFileName(newFileName);
file.setFilePath(Constants.FILE_ATTACH_PATH+"/"+fileType+"/"+newFileName);
file.setFileType(fileType);
file.setNote(" bytes");
listFile.add(file);
}
try{
this.fileAttachService.saveFiles(listFile);
JSONObject jo=new JSONObject();
jo.put("success", true);
jo.put("list", listFile);
jo.put("message", "上传完成!");
outJson(jo.toString());
}catch(Exception e){
outJson("{success:false,message:'文件上传失败'}");
e.printStackTrace();
}
return null;
}
?