在webroot文件夹下创建fileupload文件夹
单文件上传:
上传页面:
<%@ 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/uploadAction_saveFile.action" name="form1" method="post" enctype="multipart/form-data" > 上传文件名称:<input type="file" name="uploadImage"> <input type="submit" value="上传"> </form> </body> </html>
创建对应的uploadAction类
import java.io.File; import java.io.IOException; import javax.servlet.ServletContext; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class UploadAction extends ActionSupport { /* * 上传文件的存储的临时文件: * apache-tomcat-6.0.35\\work\\Catalina\\localhost\\itcast1105_struts\\upload__5fee1dc7_13ad3d1835b__8000_00000000.tmp */ private File uploadImage; //上传文件的类型:text/plain private String uploadImageContentType; //上传文件的真是名称 private String uploadImageFileName; public File getUploadImage() { return uploadImage; } public void setUploadImage(File uploadImage) { this.uploadImage = uploadImage; } public String getUploadImageContentType() { return uploadImageContentType; } public void setUploadImageContentType(String uploadImageContentType) { this.uploadImageContentType = uploadImageContentType; } public String getUploadImageFileName() { return uploadImageFileName; } public void setUploadImageFileName(String uploadImageFileName) { this.uploadImageFileName = uploadImageFileName; } public String saveFile(){ ServletContext sc = ServletActionContext.getServletContext(); String path = sc.getRealPath("/fileupload"); //创建文件用于接收上传上来的林十年文件 File file = new File(path, uploadImageFileName); try { FileUtils.copyFile(uploadImage, file); } catch (IOException e) { e.printStackTrace(); } //将临时文件清空 uploadImage.delete(); return "success"; } }
配置相应的拦截器参数
<action name="uploadAction_saveFile" class="UploadAction" method="saveFile"> <result name="success">/upload/success.jsp</result> <result name="input">/upload/error.jsp</result> <!-- 配置拦截器的参数,这里是文件上传拦截器 --> <interceptor-ref name="defaultStack"> <!-- 配置文件上传拦截器的参数 * 与定义参数的顺序无关 * 允许的类型(allowedTypes)和允许的扩展名(allowedExtensions)必须保持一致 --> <!-- * 配置上传文件的大小 * struts.xml文件中配置的是上传文件的总大小 * 这里配置的是上传文件的单个大小 --> <param name="fileUpload.maximumSize">20971520</param> <!-- 配置上传文件允许的类型,如果配置多个值的话,用","隔开 --> <param name="fileUpload.allowedTypes">text/plain,application/msword</param> <!-- 配置上传文件的扩展名,如果配置多个值的话,用","隔开 --> <param name="fileUpload.allowedExtensions">.txt</param> </interceptor-ref> </action>
多文件上传:
页面:
<%@ 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>
action中的处理方法
private File [] uploadImages; private String [] uploadImagesContentType; private String [] uploadImagesFileName; public String saveFiles(){ System.out.println("UploadsAction ******** saveFiles()"); ServletContext sc = ServletActionContext.getServletContext(); String path = sc.getRealPath("/fileupload"); for(int i=0;i<uploadImages.length;i++){ File file = new File(path, uploadImagesFileName[i]); try { FileUtils.copyFile(uploadImages[i], file); } catch (IOException e) { e.printStackTrace(); } uploadImages[i].delete(); } return "success"; }
基于struts2的文件上传示例,布布扣,bubuko.com
原文:http://blog.csdn.net/kingherooo/article/details/20218997