spring MVC +EXT 多文件上传
无废话,直接上代码。
ext代码:
var formUpload = new Ext.form.FormPanel({
fileUpload:true,
autoHeight: true,
autoWidth: true,
frame:true,
id:"uploadFormPannel",
items:[
]
});
addPanel("pannel_1");
var fileWindow = new Ext.Window({
setZIndex:Ext.emptyFn,
title: '标题',
width:900,
height:450,
closeAction:'hide',
modal : true, //文件上传的关键
buttonAlign : 'center',
bodyStyle : 'overflow-x:hidden; overflow-y:scroll',
defaults: {autoScroll: true}, // 设置滚动条
id:'testId',
name:'userfile',
/* floating:false, */
items: formUpload,
tbar:['->',{
text:'上传文件',
iconCls:'btn-add',
handler: function(grid,rindex,cindex) {
uploadWindow.show();
}
}],
buttons: [{
text: '关 闭',
handler:function(){
fileWindow.hide();
}
}]
});
var n=1;
var uploadWindow = new Ext.Window({
setZIndex:Ext.emptyFn,
title: '订单接单-资源上传',
closeAction:'hide',
// modal : true,
buttonAlign : 'center',
bodyStyle : 'overflow-x:hidden; overflow-y:scroll',
width: 400,
height:350,
minWidth: 300,
minHeight: 100,
layout: 'fit',
plain:true,
defaults: {autoScroll: true}, // 设置滚动条
id:'testId123',
items: formUpload,
name:'userfile',
tbar:['->',{
text:'继续添加文件',
iconCls:'btn-add',
handler: function(){
n++;
var fd = new Ext.form.TextField({
xtype: 'textfield',
fieldLabel: '文 件'+n,
name: 'uploadName',
inputType: 'file',
allowBlank: false,
blankText: '请上传文件',
});
var newPannelId = "pannel_"+n;
addPanel(newPannelId);
}
}],
buttons: [{
text: '上 传',
id:'uploadBtn',
handler: function() {
if(formUpload.form.isValid()){
formUpload.getForm().submit({
method:'POST',
url:url,
success : function(form, action) {
Ext.Msg.alert('信息提示',action.result.message,function(){
var pannelId = "";
for ( var i = n; i >0; i--) {
pannelId = "pannel_"+i;
Ext.getCmp('uploadFormPannel').remove(Ext.getCmp(pannelId));
}
addPanel(pannelId);
uploadWindow.hide();
$("#uploadFileInfoDiv").empty();
Ext.Ajax.request({
url : basePath + 'filesController/files.do?findFilesInfoList',
params:{ orderNumber :$("#orderNumberId").val()},
success : function(response) {
var messageJson = eval("("+response.responseText+")");
var filesFormsList = messageJson.root;
var len = filesFormsList.length;
if(len > 0){
// var mainColorSelect;
for(var i=0;i<len;i++){
}
}
}
});
});
Ext.MessageBox.getDialog().getEl().setStyle('z-index', '90000');
},
failure : function(form, action) {
Ext.Msg.alert('信息提示',action.result.message);
Ext.MessageBox().hide();
Ext.MessageBox.getDialog().getEl().setStyle('z-index','800000');
},
});
}
}
},{
text: '取 消',
handler:function(){
var pannelId = "";
for ( var i = n; i >0; i--) {
pannelId = "pannel_"+i;
Ext.getCmp('uploadFormPannel').remove(Ext.getCmp(pannelId));
}
addPanel(pannelId);
uploadWindow.hide();
}
}]
});
function addPanel(pannelId){ // 添加一个组件面板
try{
Ext.getCmp('uploadFormPannel').add(createPanel(pannelId));
Ext.getCmp('uploadFormPannel').doLayout();
}catch(e){
alert(e.name + " -- " + e.message);
}
}
function createPanel (pannelId){ // 创建一个panel
var newPannel = new Ext.Panel({
frame:true,
height:40,
id:pannelId,
items:[
{
autoHeight:true,
layout:'column',
border:false,
style:'font-size:13px;',
items: [
{
xtype: 'textfield',
fieldLabel: '文 件1',
name: 'uploadName',
inputType: 'file',
allowBlank: false,
blankText: '请上传文件',
anchor: '50%'
},
{
width:45,
xtype:"button",
iconCls:"btn-list",
text:"删除",
handler:function(){
Ext.getCmp('uploadFormPannel').remove(Ext.getCmp(pannelId));
}
}
]
}
]
});
return newPannel;
}
springMVC 后台代码:
/**
* 文件上传
* @param response
* @param request
* @param filesForm
* @return
*/
@RequestMapping(params = "upload",produces="text/html;charset=UTF-8")
@ResponseBody
public String upload(HttpServletResponse response,
HttpServletRequest request, FilesForm filesForm,String productNumber){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Message message = this.filesService.addFilesForm(filesForm,multipartRequest, this.getSessionUser().getUserId(),productNumber);
if(message.isSuccess()){
return "{success:true,message:'"+message.getMessage()+"'}";
}
return "{success:false,message:'"+message.getMessage()+"'}";
}
@Override
public Message addFilesForm(FilesForm filesForm,
MultipartHttpServletRequest multipartRequest,Integer userId) {
Message message = new Message();
if (filesForm != null && multipartRequest != null) {
List<MultipartFile> filelist = multipartRequest.getFiles("uploadName");// 文件列表
if (filelist != null && !filelist.isEmpty()) {
for (int i = 0; i < filelist.size(); i++) {
String fileProjectPath = "";
File file = new File(fileProjectPath);
if (!file.exists()) {
file.mkdir(); //如果文件目录不存在,重新创建一个
}
String filename = filelist.get(i).getOriginalFilename(); // 获取文件名称
filename.substring(filename.lastIndexOf("."),filename.length()));//文件缀名
file = new File(fileName);
try {
// 保存上传文件
filelist.get(i).transferTo(file);
try {
...
} catch (Exception e) {
e.printStackTrace();
//事务回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
message.setSuccess(false);
}
} catch (Exception e) {
//事务回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
}
}
return message;
}