struts2文件上传下载非常的简单。
给我们提供了非常简洁的方式来上传文件。
其中我们需要用到的jar文件主要是:commons-io-1.3.2.jar 和 commons-fileupload-1.2.1.jar
然后需要注意的是,我们在写表单的时候,就是必须在写页面表单的时候 需要 将form表单的
enctype="multipart/form-data"
前台
扫描二维码关注公众号,回复:
751963 查看本文章
<form enctype="multipart/form-data" action="${pageContext.request.contextPath}/test/file/upload.action" method="post"> <input type="file" name="uploadImage"> <input type="submit" value="upload"> </form>
struts2配置文件
<package name="file" namespace="/test/file" extends="struts-default"> <action name="*" class="com.anduo.action.FileUploadAction" method="{1}"> <result name="success">/success.jsp</result> </action> </package>
后台Action 代码
package com.anduo.action; import java.io.File; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; public class FileUploadAction { private File uploadImage;// 得到上传的文件 特别注意的是在这里的文件名必须跟前台的input 标签中的name 一致 private String uploadImageContentType;// 得到文件的类型 private String uploadImageFileName;// 得到文件的名称 // 这里略省了属性的getter/setter方法 public String upload() throws Exception { // 获得项目路径 String realpath = ServletActionContext.getServletContext().getRealPath( "/images"); if (uploadImage != null) { File file = new File(realpath); if (!file.exists()) { file.mkdirs(); } FileUtils.copyFile(uploadImage, new File(file, uploadImageFileName)); ActionContext.getContext().put("message", "文件上传成功!" + realpath + "/" + uploadImageFileName); } return "success"; } }
success.jsp
${message}
请看效果
上文文件成功了吧。
如果我们没有指定上传文件的存放路径,struts2会在action结束后移除临时文件
也就是我们根本就找不到我们上传的东西了。吼吼~~~