歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Struts2實現文件上傳

文件上傳這個功能是很多網站都要有的,當然,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.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5.   
  6. import org.apache.commons.io.FileUtils;  
  7. import org.apache.struts2.ServletActionContext;  
  8.   
  9. public class FileUpload {  
  10.       
  11.     private File image;//獲取上傳文件   
  12.     private String imageFileName;//獲取上傳文件名稱   
  13.     private String imageContentType;//獲取上傳文件類型   
  14.       
  15.     public String getImageContentType() {  
  16.         return imageContentType;  
  17.     }  
  18.   
  19.     public void setImageContentType(String imageContentType) {  
  20.         this.imageContentType = imageContentType;  
  21.     }  
  22.   
  23.     public File getImage() {  
  24.         return image;  
  25.     }  
  26.   
  27.     public void setImage(File image) {  
  28.         this.image = image;  
  29.     }  
  30.   
  31.     public String getImageFileName() {  
  32.         return imageFileName;  
  33.     }  
  34.   
  35.     public void setImageFileName(String imageFileName) {  
  36.         this.imageFileName = imageFileName;  
  37.     }  
  38.   
  39.     public String execute(){  
  40.         String path = ServletActionContext.getServletContext().getRealPath("/images");  
  41.           
  42.         System.out.println(path);  
  43.         if(image != null){  
  44.         File savefile = new File(new File(path),imageFileName);  
  45.         if(!savefile.getParentFile().exists())  
  46.             savefile.getParentFile().mkdirs();  
  47.         try {  
  48.             FileUtils.copyFile(image , savefile);  
  49.         } catch (IOException e) {  
  50.             // TODO Auto-generated catch block   
  51.             e.printStackTrace();  
  52.         }  
  53.           
  54.         String[] t = imageContentType.split("/");  
  55.         for(String s : t)  
  56.             System.out.println(s);  
  57.         }  
  58.         return "success";  
  59.     }  
  60. }  
Copyright © Linux教程網 All Rights Reserved