struts2的開發(文件上傳下載)

文件上傳:

第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar。這兩個文件可以從http://commons.apache.org/下載。

第二步:把form表的enctype設置爲:“multipart/form-data“,如下:
<form enctype="multipart/form-data" action="${pageContext.request.contextPath}/xxx.action" method="post">
     <input  type="file" name="uploadFile">
</form>

第三步:在Action類中添加以下屬性,屬性紅色部分對應於表單中文件字段的名稱:
public class HelloWorldAction{
  private File uploadFile;//得到上傳的文件
  private String uploadFileContentType;//得到文件的類型
  private String uploadFileFileName;//得到文件的名稱
  //這裏略省了屬性的getter/setter方法
  public String upload() throws Exception{
 String realpath = ServletActionContext.getServletContext().getRealPath("/images");
 File file = new File(realpath);
 if(!file.exists()) file.mkdirs();
 FileUtils.copyFile(uploadFile, new File(file, uploadFileFileName));
 return "success";
  }
}

多文件上傳:

第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar。這兩個文件可以從http://commons.apache.org/下載。
第二步:把form表的enctype設置爲:“multipart/form-data“,如下:
<form enctype="multipart/form-data" action="${pageContext.request.contextPath}/xxx.action" method="post">
  <input  type="file" name="uploadFile">
</form>

第三步:在Action類中添加以下屬性,屬性紅色部分對應於表單中文件字段的名稱:
public class HelloWorldAction{
  private File[] uploadFiles;//得到上傳的文件
  private String[] uploadFilesContentType;//得到文件的類型
  private String[] uploadFilesFileName;//得到文件的名稱
  //這裏略省了屬性的getter/setter方法
  public String upload() throws Exception{
 String realpath = ServletActionContext.getServletContext().getRealPath("/images");
 File file = new File(realpath);
 if(!file.exists()) file.mkdirs();
 for(int i=0;i< uploadFiles.length;i++){
  FileUtils.copyFile(uploadFiles[i], new File(file, uploadFilesFileName[i]));
 }
 return "success";
  }
}

利用Stream結果視圖實現文件下載:

實現步驟:
1.編寫Action中的getInputStream()方法,將目標文件轉化成輸入流
public class DownloadAction extends ActionSupport{
 private String fileName;
 public InputStream  getInputStream(){
  InputStream inputStream=null;
  try {
          inputStream = new FileInputStream(new File(fileName));
  } catch (FileNotFoundException e) {
  e.printStackTrace();
  }
  return inputStream;
 }
 //fileName的getter和setter方法
 public String execute() throws Exception {
  return this.SUCCESS;
 }
}

 文件下載(配置struts.xml):

配置Struts.xml文件
<action name="download" class="com.xasxt.struts.action.DownloadAction">
 <result type="stream">
 <param name="contentType">application/actet-stream</param>
 <param name="inputName">inputStream</param>
 <param name="contentDisposition">attachment; filename="test.txt"</param>
 <param name="bufferSize">4096</param>
 </result>
</action>
對於Stream result來說,有以下四個參數
contentType:指定下載文件類型,其中application/octet-stream表示無限制
inputName:流對象名,例如inputstream,框架會自動去尋找action中的getInputStream方法.
contentDisposition:經過轉碼的文件名,默認格式爲attachment;filename=“${fileName}”,調用該Action中的getFileName方法.
bufferSize:下載文件緩存大小





 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章