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="上传"> </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="上传"> </form> </div> private List<File> file; private List<String> fileFileName; private List<String> fileContentType; @Override public 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="10701096"/> <!-- 设置上传文件的临时文件夹,默认使用javax.servlet.context.tempdir 文件上传时使用--> <constant name="struts.multipart.saveDir " value="/tmp" />
推荐内容:Struts2文件上传原理及示例
http://blog.sina.com.cn/s/blog_87720b870100zkn2.html
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。