首页 > 代码库 > struts2 文件上传

struts2 文件上传

网上有很多多文件上传的资料,我只记录需要注意的一点:

jsp页面:

<div><font size="10">文件上传</font><form action="FileUp" method="post" enctype="multipart/form-data"><s:file name="upload" size="20"></s:file><input type="submit" value="http://www.mamicode.com/上传"></form>    </div>

 

s标签中file的name为upload,那么action中的bean属性就是upload

import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;//需要commons-io包和commons-fileupload包private File upload;//文件名private String uploadFileName;//设置上传文件的文件名    注意命名规范 "upload"+"FileName"private String uploadContentType;//上传文件的类型    注意命名规范 "upload"+"ContentType"//然后就是执行方法了:public String execute() throws Exception {//System.out.println(upload.getName());//System.out.println(uploadFileName);//System.out.println(uploadContentType);if(upload!=null&&upload.getName()!=null&&!"".equals(upload.getName())){String savePath = "uploads";//上传到服务器的哪个文件夹下,这个也可以在xml文件中配置String realPath = ServletActionContext.getServletContext().getRealPath("/");savePath = realPath + savePath +"/"+DateUtils.dateFormat(new Date(), "yyyyMMddhhmmss")+ uploadFileName;File saveFile = new File(savePath);if(saveFile.getParentFile()!=null&&!saveFile.getParentFile().exists()){saveFile.getParentFile().mkdirs();//如果父目录不存在则创建}FileUtils.copyFile(upload, saveFile);this.httpReq.setAttribute("uploadMessage", "上传成功!");//不要写upload.message 会把message当做属性return "SUCCESS";}return "UpFailure";}

 

只要action中属性名对了基本上就能接收到上传的文件名,当然不要忘了get,set方法

多文件上传:

<div><font size="10">文件上传</font><form action="FilesUp" method="post" enctype="multipart/form-data"><s:file name="file" size="20"></s:file><br><s:file name="file" size="20"></s:file><br><s:file name="file" size="20"></s:file><br><input type="submit" value="http://www.mamicode.com/上传"></form>    </div>private List<File> file;private List<String> fileFileName;private List<String> fileContentType;@Overridepublic String execute() throws Exception {if(file!=null){if(file.size()==0){this.log.info("空文件上传!");}else{List<String> filesName = new ArrayList<String>();for (int i=0;i<file.size();i++) {if(file.get(i)!=null&&file.get(i).getName()!=null&&!"".equals(file.get(i).getName())){File saveFile = new File(ServletActionContext.getServletContext().getRealPath("/")+"uploads"+"/"+fileFileName.get(i));FileUtils.copyFile(file.get(i), saveFile);filesName.add(fileFileName.get(i));}else{this.log.info("第"+i+"个文件为空,无法上传!");}}this.httpReq.setAttribute("upFileMessage", filesName);return "SUCCESS";}}return "re";}

 

最后配置文件:

<!-- 指定允许上传的文件最大字节数。默认值是2097152(2M) --><constant name="struts.multipart.maxSize" value="http://www.mamicode.com/10701096"/><!-- 设置上传文件的临时文件夹,默认使用javax.servlet.context.tempdir  文件上传时使用--><constant name="struts.multipart.saveDir " value="http://www.mamicode.com/tmp" />

推荐内容:Struts2文件上传原理及示例
http://blog.sina.com.cn/s/blog_87720b870100zkn2.html

 

struts2 文件上传