Struts2文件上传
Struts2使用Form表单实现文件上传
前端页面代码
这里注意将from表单的enctype属性设置为 “multipart/form-data”
属性值 | 描述 |
---|---|
application/x-www-form-urlencoded | 在发送前编码所有字符(默认) |
multipart/form-data | 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。 |
text/plain | 空格转换为 “+” 加号,但不对特殊字符编码。 |
<form action="../test/add.go" method="post" enctype="multipart/form-data">
图片:<input type="file" name="imgFile"><br>
<button type="submit">添加</button>
</form>
建立失血模型
public class UpLoadBean {
/*file类型的变量名必须与form表单中name值一致,struts2才能自动封装
*
*/
private File imgFile;//文件
private String imgFileFileName;//文件名imgFile+FileName自动获取文件名
private String imgFileContentType;//文件类型imgFile+ContentType自动获取文件类型
public File getImgFile() {
return imgFile;
}
public void setImgFile(File imgFile) {
this.imgFile = imgFile;
}
public String getImgFileFileName() {
return imgFileFileName;
}
public void setImgFileFileName(String imgFileFileName) {
this.imgFileFileName = imgFileFileName;
}
public String getImgFileContentType() {
return imgFileContentType;
}
public void setImgFileContentType(String imgFileContentType) {
this.imgFileContentType = imgFileContentType;
}
}
封装上传工具包
public class UpLoadUtils {
public static void upload(File ImgFile,String ImgFileFileName) {
//获取ServletContext
ServletContext context = ServletActionContext.getServletContext();
//获取项目运行目录的路径
String path=context.getRealPath("/upload");
File file = new File(path);
//判断当前目录是否存在,如果不存在则创建目录
if (!file.exists()) {
System.out.println("进入");
file.mkdir();
}
try {
/*复制上传的文件到指定目录
* copyFile中第一个参数为文件,第二个文件路径
* newFile第一个参数为路径 第二个文件名
*/
FileUtils.copyFile(ImgFile, new File(path,ChangeFileName(ImgFileFileName)));
} catch (IOException e) {
e.printStackTrace();
}
}
//产生新的文件名为UUID+旧的文件名
public static String ChangeFileName(String name) {
String num = UUID.randomUUID().toString();
String newName = num+name;
return newName;
}
}
action:
/*此处为基于模型驱动
*实现ModelDriven接口
*重写getModel()方法,返回值为需要自动写入的变量
*/
public class UpLoadAction implements ModelDriven<UpLoadBean>{
private UpLoadBean bean = new UpLoadBean();
public String execute() {
UpLoadUtils.upload(bean.getImgFile(), bean.getImgFileFileName());
return "success";
}
@Override
public UpLoadBean getModel() {
return bean;
}
}