• header中Content-Disposition的作用与使用方法


    1 Content-disposition的含义

    是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。

    格式说明:
    content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )  

    字段说明:

    Content-Disposition属性有两种类型:inline 和 attachment

    inline :将文件内容直接显示在页面

    attachment:弹出对话框让用户下载:disposition-type是以什么方式下载,如attachment为以附件方式下载

    disposition-parm为默认保存时的文件名
    服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上

    Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");

    2 代码示例

    File file = new File("rfc1806.txt");  
    String filename = file.getName();  
    response.setHeader("Content-Type","text/plain");  
    response.addHeader("Content-Disposition","inline;filename=" + new String(filename.getBytes(),"utf-8"));  
    response.addHeader("Content-Length","" + file.length());  

    3 下载文件名乱码解决方案

    if (isIE) {
    //IE浏览器的乱码问题解决
        fileName = URLEncoder.encode(fileName, "UTF-8");
    } else {
        //万能乱码问题解决
        fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
    }
    response.setHeader("Content-disposition", "attachment;filename="" + fileName + """);
    //剩下的就是将文件流输出到response
    //FileCopyUtils.copy(inputStream, response.getOutputStream);
  • 相关阅读:
    叉积与点积
    Vector3 *2 ,ToString()自动四舍五入
    "无法删除数据库,因为该数据库当前正在使用"问题解决
    感谢信
    实变函数一窥
    北京大学2015年数学分析考研试题
    象棋是门残忍的艺术---续篇
    象棋是门残忍的艺术
    赣南师范学院教师高级专业技术资格评审委员会评审通过人员公示名单
    [再寄小读者之数学篇](2014-12-24 乘积型不等式)
  • 原文地址:https://www.cnblogs.com/Lambquan/p/12980088.html
Copyright © 2020-2023  润新知