• struts2文件下载 <result type="stream">


    <!--struts.xml配置-->
    <action name="download" class="com.unmi.action.DownloadAction">        
         <result name="success" type="stream"><!--type 为 stream 应用 StreamResult 处理-->        
             <param name="contentType">application/octet-stream</param><!--默认为 text/plain-->        
                     
             <!-- 默认就是 inputStream,它将会指示 StreamResult 通过 inputName 属性值的 getter 方法,        
                   比如这里就是 getInputStream() 来获取下载文件的内容,意味着你的 Action 要有这个方法 -->        
             <param name="inputName">inputStream</param>        
                     
             <!-- 默认为 inline(在线打开),设置为 attachment 将会告诉浏览器下载该文件,filename 指定下载文        
                   件保有存时的文件名,若未指定将会是以浏览的页面名作为文件名,如以 download.action 作为文件名,        
                   这里使用的是动态文件名,${fileName}, 它将通过 Action 的 getFileName() 获得文件名 -->        
             <param name="contentDisposition">attachment;filename="${fileName}"</param>        
             <param name="bufferSize">4096</param><!-- 输出时缓冲区的大小 -->        
         </result>        
    </action>
     
    Java代码:
    public class NetbookSerialAction {        
             
         public String execute() throws Exception {        
             //这里可加入权限控制        
             return "success";        
         }        
             
         //获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容        
         public InputStream getInputStream() throws Exception {        
             //return new FileInputStream("somefile.rar"); 直接下载 somefile.rar        
             
             //和 Servlet 中不一样,这里我们不需对输出的中文转码为 ISO8859-1        
             return new ByteArrayInputStream("Struts2 文件下载测试".getBytes());        
         }        
             
         //对于配置中的 ${fileName}, 获得下载保存时的文件名        
         public String getFileName() {        
             DateFormat df = new SimpleDateFormat("yyyy-MM-dd");        
             String fileName = "序列号(" + df.format(new Date()) + ").txt";        
             try {        
                 //中文文件名也是需要转码为 ISO8859-1,否则乱码        
                 return new String(fileName.getBytes(), "ISO8859-1");        
             } catch (UnsupportedEncodingException e) {        
                 return "impossible.txt";        
             }        
         }        
     }
  • 相关阅读:
    Finalize,Dispose,SuppressFinalize
    防火防盗防微软,Firefox发布插件自动检测服务
    Nginx的Rewrite设置及示例
    Linux游戏开发包 ClanLib 2.1.0 发布
    HTTP协议详解(真的很经典)
    Linux on POWER:发行版迁移和二进制兼容性考虑事项
    映射网络驱动器VBS脚本
    [笔记] 使用 opcache 优化生产环境PHP
    2020最新版MySQL数据库面试题(三)
    请注意,面试中有这7个行为肯定会被拒绝!
  • 原文地址:https://www.cnblogs.com/dreamzhiya/p/4900254.html
Copyright © 2020-2023  润新知