到这里,确实可以上传多个文件,但是对于我来说新问题又来,多个id,我的界面的文件不是固定的,是动态加载的,那么id要动态生成,我觉得太麻烦,为什么不取name呢?然后把以上代码改为如下:
packagecom.ssy.action;
importcom.opensymphony.xwork2.ActionSupport;
importorg.apache.commons.io.FileUtils;
importorg.apache.struts2.util.ServletContextAware;
importjavax.servlet.ServletContext;
importjava.io.*;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Random;
publicclassFileuploadextendsActionSupportimplementsServletContextAware{
privateFile[]gridDoc,caseDoc;
privateString[]gridDocFileName,caseDocFileName;
privateServletContextcontext;
publicStringexecute(){
inti=0;i<gridDocFileName.length;i++){
System.out.println(gridDocFileName[i]);
}
0;i<caseDocFileName.length;i++){
System.out.println(caseDocFileName[i]);
}
StringtargetDirectory=context.getRealPath("/uploadFile");
{
0;i<gridDoc.length;i++){
StringtargetFileName=generateFileName(gridDocFileName[i]);
Filetarget=newFile(targetDirectory,targetFileName);
FileUtils.copyFile(gridDoc[i],target);
}
}catch(Exceptione){
e.printStackTrace();
}
returnSUCCESS;
}
publicFile[]getGridDoc(){
returngridDoc;
}
voidsetGridDoc(File[]gridDoc){
this.gridDoc=gridDoc;
}
publicFile[]getCaseDoc(){
returncaseDoc;
}
voidsetCaseDoc(File[]caseDoc){
this.caseDoc=caseDoc;
}
publicString[]getGridDocFileName(){
returngridDocFileName;
}
voidsetGridDocFileName(String[]gridDocFileName){
this.gridDocFileName=gridDocFileName;
}
publicString[]getCaseDocFileName(){
returncaseDocFileName;
}
voidsetCaseDocFileName(String[]caseDocFileName){
this.caseDocFileName=caseDocFileName;
}
StringgenerateFileName(StringfileName){
System.out.println(fileName);
SimpleDateFormatsf=newSimpleDateFormat("yyMMddHHmmss");
StringformatDate=sf.format(newDate());
intrandom=newRandom().nextInt(10000);
intposition=fileName.lastIndexOf(".");
Stringextension=fileName.substring(position);
returnformatDate+random+extension;
}
}
写到这里,我就有疑问了,之前的大神改的多文件,为什么还是取id,而且后台是怎么取的,我还是没怎么弄明白,我改的这个代码可行么?是不是存在bug呢?这个还有待考验,如果看出问题,请指出,共同学习