上传页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'employeeAdd.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}/control/employee/list_execute.action" enctype="multipart/form-data" method="post">
文件:<input type="file" name="image">
<input type="submit" value="上传"/>
</form>
</body>
</html>
pageContext.request.contextPath 绝对路径,取出部署应用程序名,解决不同部署方式的差别
enctype="multipart/form-data" 用于文件上传
上传到action的处理:
package cn.itcast.action;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
public class HelloWorldAction {
private File image;
private String imageFileName;
public String getImageFileName() {
return imageFileName;
}
public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
}
public File getImage() {
return image;
}
public void setImage(File image) {
this.image = image;
}
public String addUI(){
return "success";
}
public String execute() throws Exception{
String realpath = ServletActionContext.getServletContext().getRealPath("/images"); // images文件夹绝对路径
System.out.println(realpath);
if(image!=null){
File savefile = new File(new File(realpath), imageFileName); //创建一个目录下的file
if(!savefile.getParentFile().exists()) savefile.getParentFile().mkdirs(); //文件夹不存在,则创建文件夹
FileUtils.copyFile(image, savefile); //复制image到savefile
ActionContext.getContext().put("message", "上传成功");
}
return "success";
}
}