zoukankan      html  css  js  c++  java
  • struts2框架之文件下载(参考第三天学习笔记)

    下载

    1. 下载是一种响应方式
      正常的响应:响应正文是html:response.getWriter().print("html");
    下载的响应:
      1.一个流:字节数据:response.getOutputStream().write(文件的内容,即一些字节数据);
    2.response.setContentType("image/jpeg");
    3. response.setHeader("Content-disposition", "attachment;filename=xxx");

    2. Struts下载
    Struts2中的响应由Result来完成,所以我们需要配置一种特殊类型的<reuslt>

    1). 配置<result type="stream">,其中stream说明了当前结果为下载。
    2). 需要为结果配置两个头,一个流!

    <param name="contentType">image/jpeg</param>
    <param name="contentDisposition">attachment;filename=a.jpg</param>
    <!--
    结果会得到Action的类型为InputStream属性的名称!
    结果得到名称之后,通过名称来调用get方法得到流对象。
    -->
    <param name="inputName">inputStream</param>

    必须为Action提供一个InputStream类型的属性,必须提供get方法
    需要给<result>配置属性名称参数,而不是流对象本身

    下载附件名乱码解决

        /**
         * 下载文件时,针对不同浏览器,进行附件名的编码
         * @param filename 下载文件名
         * @param agent 客户端浏览器
         * @return 编码后的下载附件名
         * @throws IOException
         */
        public String encodeDownloadFilename(String filename, String agent) throws IOException{
            if(agent.contains("Firefox")){ // 火狐浏览器
                filename = "=?UTF-8?B?"+new BASE64Encoder().encode(filename.getBytes("utf-8"))+"?=";
            }else{ // IE及其他浏览器
                filename = URLEncoder.encode(filename,"utf-8");
            }
            return filename;
        }

       

  • 相关阅读:
    JavaScript优美的特性
    指尖初体验之主屏幕操作
    XHTML下css+div布局总结
    CSS表常用小技巧
    让两个DIV居中显示
    用CSS做滑动门
    CSS控制文本自动换行
    符合css规范的下拉菜单(兼容ff\ie6\ie7)
    层垂直居中于浏览器
    用css来强制按比例压缩图片的高度或宽度
  • 原文地址:https://www.cnblogs.com/xyhero/p/9348788.html
Copyright © 2011-2022 走看看