Struts2 文件下載

關於Struts2文件下載的問題,首先要準備好一下幾個包:html

38382797

新建一個項目,總體架構以下(能夠忽略掉Upload,由於那是我前面寫上傳的時候用的):java

46292922

接着就經過一下實例來實現吧。apache

一、DownloadAction.java
json

  
  
           
  
  
  1. package com.action; 
  2.  
  3. import java.io.InputStream; 
  4.  
  5. import org.apache.struts2.ServletActionContext; 
  6.  
  7. import com.opensymphony.xwork2.ActionSupport; 
  8.  
  9. public class DownloadAction extends ActionSupport{ 
  10.     private String inputPath;   //該屬性能夠在配置文件中動態指定該屬性值 
  11.      
  12.     /** 
  13.      * 依賴注入該屬性值的setter方法 
  14.      * @param inputPath 
  15.      */ 
  16.     public void setInputPath(String inputPath) { 
  17.         this.inputPath = inputPath; 
  18.     } 
  19.      
  20.     /** 
  21.      * 定義一個返回InputStream的方法;該方法將做爲被下載文件的入口 
  22.      * 且須要配置stream類型結果時指定inputName參數 
  23.      * InputName參數的值就是方法去掉個體前綴,首字母小寫的字符串 
  24.      * @return 
  25.      */ 
  26.     public InputStream getTargetFile() { 
  27.         //ServeltContext提供getResourceAsStream()方法返回指定文件對應的輸入流 
  28.         return ServletActionContext.getServletContext().getResourceAsStream(inputPath); 
  29.     } 

2.Struts.xml架構

  
  
           
  
  
  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> 
  3. <struts> 
  4.     <constant name="struts.custom.i18n.resources" value="mess" /> 
  5.     <constant name="struts.i18n.encoding" value="UTF-8" /> 
  6.     <constant name="struts.devMode" value="true"></constant> 
  7.     <package name="lee" extends="json-default"> 
  8.         <!-- 文件上傳  --> 
  9.         <action name="uploadAction"  
  10.          
  11.         <!-- 文件下載  --> 
  12.         <action name="downloadAction" class="com.action.DownloadAction"> 
  13.          
  14.             <!-- 指定被下載內容的位置 --> 
  15.             <param name="inputPath">/upload/123.jpg</param> 
  16.              
  17.             <result name="success" type="stream"> 
  18.                 <!-- 制定下載文件的文件類型 --> 
  19.                 <param name="contentType">p_w_picpath/jpg</param> 
  20.                  
  21.                 <!-- 指定由getTargetFile()方法返回被下載文件的InputStream  --> 
  22.                 <param name="inputName">targetFile</param> 
  23.                  
  24.                 <param name="contentDisposition">p_w_upload;filename="123.jpg"</param> 
  25.                  
  26.                 <!-- 指定下載文件的緩衝大小 --> 
  27.                 <param name="bufferSize">4096</param> 
  28.             </result> 
  29.         </action> 
  30.     </package> 
  31. </struts>     

 

success.jspjsp

  
  
           
  
  
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
  5. %>  
  6. <%@taglib prefix="s" uri="/struts-tags" %>  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9. <head>  
  10. <base href="&lt;%=basePath%>"&gt;  
  11. <title>My JSP 'success.jsp' starting page</title>  
  12. </head>  
  13. <body>  
  14. 文件 <b><a href="downloadAction.action?filename=123.jpg" target="_black">123.jpg</a></b> 上傳成功! <br>  
  15. </body>  
  16. </html> 

 

 

而後部署後運行效果圖以下:ide

47496969

點擊「123.jpg」文件後彈出窗口下載:this

47521586

相關文章
相關標籤/搜索