隨筆 - 45, 文章 - 6, 評論 - 4, 引用 - 0
          數據加載中……

          Struts2文件下載

          一個簡單的利用struts2做文件下載的demo……

          首先配好struts:

          web.xml

          1. <?xml version="1.0" encoding="UTF-8"?>
          2. <web-app version="2.4"
          3.         xmlns="http://java.sun.com/xml/ns/j2ee"
          4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          5.         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
          6.         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
          7.   <welcome-file-list>
          8.     <welcome-file>index.jsp</welcome-file>
          9.   </welcome-file-list>
          10.  
          11.   <filter>
          12.         <filter-name>struts2</filter-name>
          13.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
          14.   </filter>
          15.   <filter-mapping>
          16.         <filter-name>struts2</filter-name>
          17.         <url-pattern>/*</url-pattern>
          18.   </filter-mapping>
          19.  
          20. </web-app>

          struts.xml——這里是重點

          1. <!DOCTYPE struts PUBLIC
          2.          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          3.          "http://struts.apache.org/dtds/struts-2.0.dtd">
          4.  <struts>
          5.      <package name="default" extends="struts-default">
          6.         <action name="download" class="action.DownloadAction">
          7.            <result type="stream">
          8.                                 <param name="contentType">application/octet-stream</param>
          9.                                 <param name="inputName">inputStream</param>
          10.                                 <param name="contentDisposition">attachment;filename="${fileName}"</param>
          11.                                 <param name="bufferSize">4096</param>
          12.            </result>
          13.         </action>
          14.      </package>
          15.  </struts>

          當result為stream類型時,struts2會自動根據你配置好的參數下載文件。

          其中主要使用的參數是:
          contentType 指定下載文件的文件類型 —— application/octet-stream 表示無限制
          inputName 流對象名 —— 比如這里寫inputStream,它就會自動去找Action中的getInputStream方法。
          contentDisposition 使用經過轉碼的文件名作為下載文件名 —— 默認格式是attachment;filename="${fileName}",將調用該Action中的getFileName方法。
          bufferSize 下載文件的緩沖大小

          之后寫個DownloadAction:

          1. package action;
          2.  
          3. import java.io.InputStream;
          4.  
          5. import org.apache.struts2.ServletActionContext;
          6.  
          7. public class DownloadAction {
          8.        
          9.         private String fileName;
          10.        
          11.         public void setFileName(String fileName) {
          12.                 this.fileName = fileName;
          13.         }
          14.         public InputStream getInputStream() {
          15.                 return ServletActionContext.getServletContext().getResourceAsStream("/" + fileName);
          16.         }
          17.        
          18.         public String execute(){
          19.                 return "success";
          20.         }
          21.  
          22. }

          * 注意使用getResourceAsStream方法時,文件路徑必須是以“/”開頭,且是相對路徑。這個路徑是相對于項目根目錄的。
          * 可以用return new FileInputStream(fileName)的方法來得到絕對路徑的文件。

          在WEB-INF下隨意丟一個test.txt,部署好后進入瀏覽器,輸入tomcat地址/項目路徑/download.action?fileName=test.txt即可下載到該文件。

          附:contentType類型.
          'ez' => 'application/andrew-inset',
          'hqx' => 'application/mac-binhex40',
          'cpt' => 'application/mac-compactpro',
          'doc' => 'application/msword',
          'bin' => 'application/octet-stream',
          'dms' => 'application/octet-stream',
          'lha' => 'application/octet-stream',
          'lzh' => 'application/octet-stream',
          'exe' => 'application/octet-stream',
          'class' => 'application/octet-stream',
          'so' => 'application/octet-stream',
          'dll' => 'application/octet-stream',
          'oda' => 'application/oda',
          'pdf' => 'application/pdf',
          'ai' => 'application/postscript',
          'eps' => 'application/postscript',
          'ps' => 'application/postscript',
          'smi' => 'application/smil',
          'smil' => 'application/smil',
          'mif' => 'application/vnd.mif',
          'xls' => 'application/vnd.ms-excel',
          'ppt' => 'application/vnd.ms-powerpoint',
          'wbxml' => 'application/vnd.wap.wbxml',
          'wmlc' => 'application/vnd.wap.wmlc',
          'wmlsc' => 'application/vnd.wap.wmlscriptc',
          'bcpio' => 'application/x-bcpio',
          'vcd' => 'application/x-cdlink',
          'pgn' => 'application/x-chess-pgn',
          'cpio' => 'application/x-cpio',
          'csh' => 'application/x-csh',
          'dcr' => 'application/x-director',
          'dir' => 'application/x-director',
          'dxr' => 'application/x-director',
          'dvi' => 'application/x-dvi',
          'spl' => 'application/x-futuresplash',
          'gtar' => 'application/x-gtar',
          'hdf' => 'application/x-hdf',
          'js' => 'application/x-javas

          cript',
          'skp' => 'application/x-koan',
          'skd' => 'application/x-koan',
          'skt' => 'application/x-koan',
          'skm' => 'application/x-koan',
          'latex' => 'application/x-latex',
          'nc' => 'application/x-netcdf',
          'cdf' => 'application/x-netcdf',
          'sh' => 'application/x-sh',
          'shar' => 'application/x-shar',
          'swf' => 'application/x-shockwave-flash',
          'sit' => 'application/x-stuffit',
          'sv4cpio' => 'application/x-sv4cpio',
          'sv4crc' => 'application/x-sv4crc',
          'tar' => 'application/x-tar',
          'tcl' => 'application/x-tcl',
          'tex' => 'application/x-tex',
          'texinfo' => 'application/x-texinfo',
          'texi' => 'application/x-texinfo',
          't' => 'application/x-troff',
          'tr' => 'application/x-troff',
          'roff' => 'application/x-troff',
          'man' => 'application/x-troff-man',
          'me' => 'application/x-troff-me',
          'ms' => 'application/x-troff-ms',
          'ustar' => 'application/x-ustar',
          'src' => 'application/x-wais-source',
          'xhtml' => 'application/xhtml+xml',
          'xht' => 'application/xhtml+xml',
          'zip' => 'application/zip',
          'au' => 'audio/basic',
          'snd' => 'audio/basic',
          'mid' => 'audio/midi',
          'midi' => 'audio/midi',
          'kar' => 'audio/midi',
          'mpga' => 'audio/mpeg',
          'mp2' => 'audio/mpeg',
          'mp3' => 'audio/mpeg',
          'aif' => 'audio/x-aiff',
          'aiff' => 'audio/x-aiff',
          'aifc' => 'audio/x-aiff',
          'm3u' => 'audio/x-mpegurl',
          'ram' => 'audio/x-pn-realaudio',
          'rm' => 'audio/x-pn-realaudio',
          'rpm' => 'audio/x-pn-realaudio-plugin',
          'ra' => 'audio/x-realaudio',
          'wav' => 'audio/x-wav',
          'pdb' => 'chemical/x-pdb',
          'xyz' => 'chemical/x-xyz',
          'bmp' => 'image/bmp',
          'gif' => 'image/gif',
          'ief' => 'image/ief',
          'jpeg' => 'image/jpeg',
          'jpg' => 'image/jpeg',
          'jpe' => 'image/jpeg',
          'png' => 'image/png',
          'tiff' => 'image/tiff',
          'tif' => 'image/tiff',
          'djvu' => 'image/vnd.djvu',
          'djv' => 'image/vnd.djvu',
          'wbmp' => 'image/vnd.wap.wbmp',
          'ras' => 'image/x-cmu-raster',
          'pnm' => 'image/x-portable-anymap',
          'pbm' => 'image/x-portable-bitmap',
          'pgm' => 'image/x-portable-graymap',
          'ppm' => 'image/x-portable-pixmap',
          'rgb' => 'image/x-rgb',
          'xbm' => 'image/x-xbitmap',
          'xpm' => 'image/x-xpixmap',
          'xwd' => 'image/x-xwindowdump',
          'igs' => 'model/iges',
          'iges' => 'model/iges',
          'msh' => 'model/mesh',
          'mesh' => 'model/mesh',
          'silo' => 'model/mesh',
          'wrl' => 'model/vrml',
          'vrml' => 'model/vrml',
          'css' => 'text/css',
          'html' => 'text/html',
          'htm' => 'text/html',
          'asc' => 'text/plain',
          'txt' => 'text/plain',
          'rtx' => 'text/richtext',
          'rtf' => 'text/rtf',
          'sgml' => 'text/sgml',
          'sgm' => 'text/sgml',
          'tsv' => 'text/tab-separated-values',
          'wml' => 'text/vnd.wap.wml',
          'wmls' => 'text/vnd.wap.wmlscript',
          'etx' => 'text/x-setext',
          'xsl' => 'text/xml',
          'xml' => 'text/xml',
          'mpeg' => 'video/mpeg',
          'mpg' => 'video/mpeg',
          'mpe' => 'video/mpeg',
          'qt' => 'video/quicktime',
          'mov' => 'video/quicktime',
          'mxu' => 'video/vnd.mpegurl',
          'avi' => 'video/x-msvideo',
          'movie' => 'video/x-sgi-movie',
          'ice' => 'x-conference/x-cooltalk'

          posted on 2009-08-14 14:31 liyang 閱讀(27042) 評論(0)  編輯  收藏 所屬分類: struts2

          主站蜘蛛池模板: 永靖县| 富民县| 盐源县| 砀山县| 德清县| 刚察县| 铜鼓县| 屯门区| 巴南区| SHOW| 宣恩县| 青田县| 三明市| 新化县| 上饶县| 三亚市| 泽库县| 安顺市| 尼玛县| 周至县| 毕节市| 民权县| 鄢陵县| 启东市| 广宗县| 迭部县| 广元市| 蓝山县| 遂昌县| 嘉峪关市| 都兰县| 登封市| 德惠市| 凤庆县| 宿州市| 左权县| 湘阴县| 甘泉县| 沧州市| 上虞市| 湖口县|