歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Struts2實現文件上傳

Struts2實現文件上傳

日期:2017/3/1 10:33:50   编辑:Linux編程

文件上傳這個功能是很多網站都要有的,當然,Struts對文件上傳也進了支持,可以說,使用Struts實現文件上傳是非常簡單的而且方便,下面來介紹一下。

首先,需要導入包commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar,後面的那個包是因為在下面的代碼中會使用到它裡面的一些方法,實際上也可以不加入,這些包都是可以在Struts的lib文件夾裡面找到的.

然後就是寫Action類了,這裡需要接收文件(File類型),文件名,文件類型,文件名必須和表單裡面的name屬性名一致,學過servlet的都知道為什麼,然後文件名的寫法是文件名+FileName,然後文件類型名稱的寫法是文件名+ContentType,分別把他們設置成屬性,就是分別為他們提供set和get方法。

接著需要把接受到的File文件轉存到服務器的目錄裡,否則它就存放在Struts的臨時目錄裡面,在Action執行完畢後會被刪除。具體方法是使用servletContextgetRealPath方法獲得項目的絕對路徑,然後建立一個目錄去存放這個上傳的文件。

代碼如下

  1. package com.bird.action;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import org.apache.commons.io.FileUtils;
  5. import org.apache.struts2.ServletActionContext;
  6. public class FileUpload {
  7. private File image;//獲取上傳文件
  8. private String imageFileName;//獲取上傳文件名稱
  9. private String imageContentType;//獲取上傳文件類型
  10. public String getImageContentType() {
  11. return imageContentType;
  12. }
  13. public void setImageContentType(String imageContentType) {
  14. this.imageContentType = imageContentType;
  15. }
  16. public File getImage() {
  17. return image;
  18. }
  19. public void setImage(File image) {
  20. this.image = image;
  21. }
  22. public String getImageFileName() {
  23. return imageFileName;
  24. }
  25. public void setImageFileName(String imageFileName) {
  26. this.imageFileName = imageFileName;
  27. }
  28. public String execute(){
  29. String path = ServletActionContext.getServletContext().getRealPath("/images");
  30. System.out.println(path);
  31. if(image != null){
  32. File savefile = new File(new File(path),imageFileName);
  33. if(!savefile.getParentFile().exists())
  34. savefile.getParentFile().mkdirs();
  35. try {
  36. FileUtils.copyFile(image , savefile);
  37. } catch (IOException e) {
  38. // TODO Auto-generated catch block
  39. e.printStackTrace();
  40. }
  41. String[] t = imageContentType.split("/");
  42. for(String s : t)
  43. System.out.println(s);
  44. }
  45. return "success";
  46. }
  47. }
Copyright © Linux教程網 All Rights Reserved