struts2 在內部已經幫我們做了很多封裝的工作,我們只需要簡單的寫一些配置即可。
1 表單頁面
<form action="${pageContext.request.contextPath }/fileupload" method="post" enctype="multipart/form-data">
<input type="file" name="filesrc" ><br>
<input type="submit" value="提交">
</form>
注意:要記住input type=file 的 name屬性值,後台會用到
2 FileUploadAction 類來處理文件上傳,將上傳來的文件存放到upload 文件夾裡
public class FileUploadAction extends ActionSupport {
private File filesrc;
private String filesrcFileName;
private String filesrcContentType;
public File getFilesrc() {
return filesrc;
}
public void setFilesrc(File filesrc) {
this.filesrc = filesrc;
}
public String getFilesrcFileName() {
return filesrcFileName;
}
public void setFilesrcFileName(String filesrcFileName) {
this.filesrcFileName = filesrcFileName;
}
public String getFilesrcContentType() {
return filesrcContentType;
}
public void setFilesrcContentType(String filesrcContentType) {
this.filesrcContentType = filesrcContentType;
}
public String uploadFile(){
String path = ServletActionContext.getServletContext().getRealPath("/upload");
File destFile = new File(path, filesrcFileName);
try {
FileUtils.copyFile(filesrc, destFile);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return SUCCESS;
}
}
注意:所有與上傳文件有關的域變量命名規則開始要使用 form 表單中的name屬性值。比如要有一個文件對象,就是filesrc,如果想知道文件名,就是:filesrcFileName,其中後面的FileName是固定的。至此就可以將文件存放到upload文件夾中。
當然此處沒有設置文件大小、類型等判斷。
3 action的配置,和一般的action配置相同。就不寫了。可以參考之前的博文。struts2開發流程及配置,域對象對數據存儲的3種方式