`

struts 2 实现下载

阅读更多


转帖 谢谢


说明:
    下载是通过StreamResult类来实现,这是一个自定义结果类型,主要作用是直接向HttpServletResponse对象发送原始数据。 StreamResult假定Action会提供一个输入流的访问方法,并将这个输入流输出到响应对象中。

SteamResult还提供如下配置属性:

contentType :
     内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片

inputName :
    下载文件的来源流,对应着action类中某个类型为Inputstream的方法名,例如取值为inputStream的属性需要编写getInputStream()方法

contentDisposition :
    文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:
attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="struts2.txt"

bufferSize :
    下载缓冲区的大小。

    在这里面,contentType属性和contentDisposition分别对应着HTTP响应中的头Content-Type和Content-disposition头

 

下面是一个StreamResult的配置示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    
<struts>
<package name="xg" namespace="/" extends="struts-default">
<action name="ProjectNeedsAction" class="projectNeedsAction" >
<!-- 下載配置 -->
<result name="success" type="stream">
<!-- 下載類型和編碼配置 -->
<param name="contentType">  application/octet-stream;charset=UTF-8</param>  
<!-- action中提供输入流的方法名称,缺省为inputStream  -->
<param name="inputName">inputStream</param>
<!-- 指定下載名:name对应action类中的方法 getName() --> 
<param name="contentDisposition">attachment;filename="${name}"</param> 
<!-- 緩存 -->
<param name="bufferSize">4096</param>
</result>
</package>
</struts>

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics