首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 2 文件下載完整實作:支援中文檔名與多種來源

     編輯:Java 相關知識

核心 Result 類型:stream

Struts 2 使用 type="stream" 實現文件下載,關鍵參數:

  • contentType:MIME 類型,如 text/plain、application/octet-stream。
  • inputName:Action 中 InputStream 屬性名稱(需提供 getInputStream())。
  • contentDisposition:attachment;filename="xxx" 彈出存檔對話框;inline 瀏覽器嘗試直接顯示。
  • bufferSize:緩衝區大小,預設 4096。

三種下載場景配置範例

1. 簡單文字內容下載

<action name="download" class="example.FileDownloadAction"> <result name="success" type="stream"> <param name="contentType">text/plain</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename="struts2.txt"</param> <param name="bufferSize">4096</param> </result> </action>

2. 支援中文檔名(動態轉碼)

Action 額外提供 getDownloadFileName() 回傳 URL 編碼後檔名:

<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>

3. 下載伺服器現有檔案

Action 依 inputPath 讀取檔案建立 InputStream,同樣搭配動態檔名:

<param name="contentType">application/octet-stream;charset=ISO8859-1</param> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>

Action 實作要點

  • 實作 getInputStream() 回傳資料流(字串轉換、檔案讀取等)。
  • 中文檀名處理:URLEncoder.encode(fileName, "UTF-8"),並替換 + 為 %20。
  • 大檔案建議使用 FileInputStream 避免記憶體壓力。

完整 struts.xml 片段

<package name="default" extends="struts-default"> <!-- 三個 action 定義見上 --> </package>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved