struts2学习笔记(七)—— struts2的文件上传
一、前台页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <!-- 注意!表单必须添加 enctype 属性,值为"multipart/form-data" --> <form action="upload.action" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上传"/> </form> </body> </html>
前台页面要求:
- 表单必须post提交
- 表单提交类型enctype.必须多段式
- 文件上传使用<input type="file" /> 组件
二、后台
public class UploadAction extends ActionSupport { // 上传的文件会自动封装到File对象 // 在后台提供一个与前台input type=file组件name相同的属性 private File file; // 在提交键名后加上固定后缀FileName,文件名称会自动封装到属性中 private String fileFileName; // 在提交键名后加上固定后缀ContentType,文件MIME类型会自动封装到属性中 private String fileContentType; public String upload(){ if(file!=null){ System.out.println("文件名称:"+fileFileName); System.out.println("文件类型:"+fileContentType); // 将上传文件保存到指定位置 file.renameTo(new File("D:/upload/test3.jpg")); } return "success"; } public void setFile(File file) { this.file = file; } public void setFileFileName(String fileFileName) { this.fileFileName = fileFileName; } public void setFileContentType(String fileContentType) { this.fileContentType = fileContentType; } }
注意:这个fileFileName,fileContentType。如果File 属性名xxx(private File xxx;) 。那这个必须是xxxFileName, xxxContentType(否则将获取不到相应的值)。然后也是分别给set 方法就可以。