1、jsp主要代码:
<body>
<center>
<font color="red"><s:fielderror/></font>
<s:form action="uploadOne" method="post" enctype="multipart/form-data">
<s:file name="file" label="文件1"></s:file>
<s:file name="file" label="文件2"></s:file>
<s:file name="file" label="文件3"></s:file>
<s:file name="file" label="文件4"></s:file>
<s:submit label="上传"/>
</s:form>
</center>
</body>
解析:A、 form里面的method必须是post,enctype="multipart/form-data"上传文件必须这样写
B、name="file",批量上传name的值要一样
2、创建一个actionJAVA文件
public class UploadImageAction extends ActionSupport{
private List<File> file;
private List<String> fileFileName;
private List<String> fileContentType;
public String execute() throws IOException{
//得到工程保存图片的路径
String root = ServletActionContext.getServletContext.getRealPath("/upload");
//循环上传的文件
for(int i = 0 ; i < file.size() ; i ++){
InputStream is = new FileInputStream(file.get(i));
//得到图片保存的位置(根据root来得到图片保存的路径在tomcat下的该工程里)
File destFile = new File(root,this.getFileFileName().get(i));
//把图片写入到上面设置的路径里
OutputStream os = new FileOutputStream(destFile);
byte[] buffer = new byte[400];
int length = 0 ;
while((length = is.read(buffer))>0){
os.write(buffer, 0, length);
}
is.close();
os.close();
}
return SUCCESS;
}
}
解析:在这个action里面做了几个测试
要在WebRoot下面新建一个文件夹--upload
A、在setXXX()方法中,一个一个的打印,明白每个变量到底是干嘛的,到底得到些什么值
B、刚开始以后要把得到的图片的名称一个一个得手动添加到fileFileName,结果用
fileFileName.add(图片名称)后,fileFileName的length比添加之前多了一倍
于是明白,在命名的时候要遵循一个规律,这个样的话fileFileName自动的把图片名称
一个一个的添加到里面,不用自己添加。