struts2文件下载

来源:互联网 发布:萧然问政网络平台 编辑:程序博客网 时间:2024/06/03 23:42
Struts2文件下载2010-05-23 8:05一个简单的利用struts2做文件下载的demo……首先配好struts:web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>struts.xml——这里是重点<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="default" extends="struts-default">   <action name="download" class="action.DownloadAction">      <result type="stream"><param name="contentType">application/octet-stream</param><param name="inputName">inputStream</param><param name="contentDisposition">attachment;filename="${fileName}"</param><param name="bufferSize">4096</param>      </result>   </action></package></struts>当result为stream类型时,struts2会自动根据你配置好的参数下载文件。其中主要使用的参数是:contentType 指定下载文件的文件类型 —— application/octet-stream 表示无限制inputName 流对象名 —— 比如这里写inputStream,它就会自动去找Action中的getInputStream方法。contentDisposition 使用经过转码的文件名作为下载文件名 —— 默认格式是attachment;filename="${fileName}",将调用该Action中的getFileName方法。bufferSize 下载文件的缓冲大小之后写个DownloadAction:packageaction;import java.io.InputStream;import org.apache.struts2.ServletActionContext;publicclassDownloadAction {privateStringfileName;publicvoidsetFileName(String fileName) {this.fileName = fileName;}publicInputStreamgetInputStream() {returnServletActionContext.getServletContext().getResourceAsStream("/" + fileName);}publicStringexecute(){return"success";}}* 注意使用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-javascript','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'
http://blog.163.com/fzyuan_10/blog/static/2076023962012431102820728/
0 0