struts2实现多文件上传
jsp页面:
<%@ page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/upload/uploadsAction_saveFiles.action"
name="form1" method="post" enctype="multipart/form-data" >
上传文件名称:<input type="file" name="uploadImages"><br>
上传文件名称:<input type="file" name="uploadImages"><br>
上传文件名称:<input type="file" name="uploadImages"><br>
<input type="submit" value="上传">
</form>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="upload" namespace="/upload" extends="struts-default">
<action name="uploadAction_saveFile" class="cn.itcast.action.UploadAction" method="saveFile">
<result name="success">/upload/success.jsp</result>
<result name="input">/upload/error.jsp</result>
<!-- 配置拦截器的参数 这里是配置文件上传的拦截器 -->
<interceptor-ref name="defaultStack">
<!--
配置上传文件的大小
这里配置的是上传单个文件的大小
-->
<param name="fileUpload.maximumSize">20971520</param>
<!-- 配置上传文件允许的类型,如果配置多个值用","隔开 -->
<param name="fileUpload.allowedTypes">text/plain</param>
<!-- 配置上传文件的扩展名,如果配置多个值用","隔开 -->
<param name="fileUpload.allowedExtensions">.doc,.txt</param>
</interceptor-ref>
</action>
<!-- 多文件上传 也可以像配置单文件参数那样配置一些限制-->
<action name="uploadsAction_saveFiles" class="cn.itcast.action.UploadsAction" method="saveFiles">
<result name="success">/upload/success.jsp</result>
</action>
</package>
</struts>
Action类:
package cn.itcast.action;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UploadsAction extends ActionSupport{
private File[] uploadImages;//上传文件的存储的临时文件
private String[] uploadImagesContentType;//上传文件的类型
private String[] uploadImagesFileName;//上传文件的真实名称
public File[] getUploadImages() {
return uploadImages;
}
public void setUploadImages(File[] uploadImages) {
this.uploadImages = uploadImages;
}
public String[] getUploadImagesContentType() {
return uploadImagesContentType;
}
public void setUploadImagesContentType(String[] uploadImagesContentType) {
this.uploadImagesContentType = uploadImagesContentType;
}
public String[] getUploadImagesFileName() {
return uploadImagesFileName;
}
public void setUploadImagesFileName(String[] uploadImagesFileName) {
this.uploadImagesFileName = uploadImagesFileName;
}
public String saveFiles(){
System.out.println("UploadsAction-----saveFiles()");
//获取文件的保存路径
String path=ServletActionContext.getServletContext().getRealPath("/fileupload");
for(int i=0;i<uploadImages.length;i++){
//循环创建一组名为uploadImagesFileName的文件
File file=new File(path,uploadImagesFileName[i]);
try {
FileUtils.copyFile(uploadImages[i], file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "success";
}
}