struts2:文件上传

来源:互联网 发布:ife矩阵 编辑:程序博客网 时间:2024/05/16 23:49

文件上传

页面:

注意的是不要忘记了enctype="multipart/form-data">

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>My JSP 'fileUpload.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">      </head>    <body>    <form action="${pageContext.request.contextPath }/file/upload.action" method="post" enctype="multipart/form-data"> <!—在做文件上传的时候,不要忘记这个 -->    请选择文件:<input type="file" name="file" /><br/>    <input type="submit" value="上传" />    </form>  </body></html>

struts.xml配置文件中

input的返回result

<!—文件上传的临时目录--><constant name="struts.multipart.saveDir" value="d://"/><package name="file" namespace="/file" extends="struts-default"><action name="upload" class="hwt.action.FileUploadAction"><!--  文件上传拦截器 --><interceptor-ref name="fileUpload"><!—文件上传大小控制—><param name="maximumSize">1024</param><!—上传类型控制---><param name="allowedTypes"> text/plain<!-- image/png,image/gif,image/jpeg --></param></interceptor-ref><!-- 要放在后面,要不然不会起到作用 --><interceptor-ref name="defaultStack"/><!-- 还需要配置input为错误输出页面 --><result name="input">/fileUpload.jsp</result><result name="success">/downLoad.jsp</result><result name="failure">/fileUpload.jsp</result></action></package>

Action中

注意: 继承ActionSupport 

/* * ActionSupport里面提供了validate的校验功能 * 实际上继承ActionSupport之后  * 就等同于实现了很多接口 Action,Validateable,ValidationAWare,TextProvider,LoacalProvider,Serializable  * 可以提供数据校验 序列化 国际化等功能  */public class FileUploadAction extends ActionSupport{//记得生成setter/getter方法private File file ;//这个名字是struts2会自动填充,但是取名必须是-属性名ContentType;private String fileContentType; //这个名字是struts2会自动填充,但是取名必须是-属性名FileName;private String fileFileName;public String execute() throws IOException{if (file != null) {String realPath = ServletActionContext.getServletContext().getRealPath(FileUploadUtils.baseName);String savepath = FileUploadUtils.getSavePath(realPath);String uuidFileName = FileUploadUtils.getUUIDName(fileFileName);File descFile = new File(savepath,uuidFileName);//这个工具类是commons.io包下面的FileUtils.copyFile(file, descFile);return "success";}else {return "failure";}}//setter getter...}

工具类:

public class FileUploadUtils {public static String baseName;//单利模式得到属性文件中的文件上传的配置static{Properties fileProperties = new Properties();InputStream iStream =FileUploadUtils.class.getResourceAsStream("/fileUpload.properties");try {fileProperties.load(iStream);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}baseName = fileProperties.getProperty("basepath");}//把上传的文件名字改成UUID,解决相同文件名public static String getUUIDName(String fileName){UUID uuid = UUID.randomUUID();String extension = fileName.substring(fileName.lastIndexOf("."));return uuid+extension;}//得到服务器上的保存路径,便于查找public static String getSavePath(String realPath){//对上传的文件进行分级Calendar calendar = new GregorianCalendar();int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH);int day   = calendar.get(Calendar.DAY_OF_MONTH);String savePath = realPath+"\\"+year+"\\"+month+"\\"+day;File file = new File(savePath);if (!file.exists()) {file.mkdirs();}System.out.println(savePath);return savePath;}}



原创粉丝点击