spring MVC +EXT 多文件上传

无废话,直接上代码。
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;
}