struts2文件上传下载非常的简单。
给我们提供了非常简洁的方式来上传文件。
其中我们需要用到的jar文件主要是:commons-io-1.3.2.jar 和 commons-fileupload-1.2.1.jar
然后需要注意的是,我们在写表单的时候,就是必须在写页面表单的时候 需要 将form表单的
enctype="multipart/form-data"
前台
<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结束后移除临时文件
也就是我们根本就找不到我们上传的东西了。吼吼~~~