java文件下载设置中文名称的实例(response.addHeader)

 更新时间:2017年12月01日 10:11:54   作者:抠脚大汉在抠脚  
下面小编就为大家分享一篇java文件下载设置中文名称的实例(response.addHeader),具有很好的参考价值,希望对大家有所帮助

实例如下:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   String browser = "";
   String fileName = "测试.txt";
   try {
    browser = request.getHeader("User-Agent");
    if (-1 < browser.indexOf("MSIE 6.0") || -1 < browser.indexOf("MSIE 7.0")) {
     // IE6, IE7 浏览器
     response.addHeader("content-disposition", "attachment;filename="
       + new String(fileName.getBytes(), "ISO8859-1"));
    } else if (-1 < browser.indexOf("MSIE 8.0")) {
     // IE8 
     response.addHeader("content-disposition", "attachment;filename="
       + URLEncoder.encode(fileName, "UTF-8"));
    } else if (-1 < browser.indexOf("MSIE 9.0")) {
     // IE9
     response.addHeader("content-disposition", "attachment;filename="
       + URLEncoder.encode(fileName, "UTF-8"));
    } else if (-1 < browser.indexOf("Chrome")) {
     // 谷歌
     response.addHeader("content-disposition",
       "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8"));
    } else if (-1 < browser.indexOf("Safari")) {
     // 苹果
     response.addHeader("content-disposition", "attachment;filename="
       + new String(fileName.getBytes(), "ISO8859-1"));
    } else {
     // 火狐或者其他的浏览器
     response.addHeader("content-disposition",
       "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8"));
    }
   } catch (Exception e) {
    e.printStackTrace();
   }
   InputStream in = new FileInputStream("D:\\test.txt");//获取文件输入流
    int len = 0;
    byte[] buffer = new byte[1024];
    OutputStream out = response.getOutputStream();
    while ((len = in.read(buffer)) > 0) {
     out.write(buffer,0,len);//将缓冲区的数据输出到客户端浏览器
    }
    in.close();
    out.flush();
    out.close();
 }

判断各个浏览器,然后进行解码和加码。

以上这篇java文件下载设置中文名称的实例(response.addHeader)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 字符终端上获取输入三种的方式分享

    Java 字符终端上获取输入三种的方式分享

    这篇文章主要介绍了Java 字符终端上获取输入三种的方式,有需要的朋友可以参考一下
    2013-11-11
  • 利用Java编写个"不贪吃蛇"小游戏

    利用Java编写个"不贪吃蛇"小游戏

    贪吃蛇大家一定有玩过了吧,今天小编给大家带来点不一样的。本文将用Java编写一个"不贪吃蛇"小游戏,感兴趣的小伙伴可以动手尝试一下
    2022-08-08
  • SpringBoot实现简单的日志链路追踪

    SpringBoot实现简单的日志链路追踪

    随着分布式应用的普及,现在的一些应用系统不再像以前,所有的文件(前后端程序)都打包在一个包中,本文通过一个简单的SpringBoot应用来总结,我们如何将日志串联起来,文中有详细的代码示例,需要的朋友可以参考下
    2023-10-10
  • Redis分布式锁实现方式及超时问题解决

    Redis分布式锁实现方式及超时问题解决

    这篇文章主要介绍了Redis分布式锁实现方式及超时问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java中Controller、Service、Dao/Mapper层的区别与用法

    Java中Controller、Service、Dao/Mapper层的区别与用法

    在Java开发中,通常会采用三层架构(或称MVC架构)来划分程序的职责和功能,分别是Controller层、Service层、Dao/Mapper层,本文将详细给大家介绍了三层的区别和用法,需要的朋友可以参考下
    2023-05-05
  • Java中使用DOM4J生成xml文件并解析xml文件的操作

    Java中使用DOM4J生成xml文件并解析xml文件的操作

    这篇文章主要介绍了Java中使用DOM4J来生成xml文件和解析xml文件的操作,今天通过代码给大家展示了解析xml文件和生成xml文件的方法,需要的朋友可以参考下
    2021-09-09
  • Spring中的ImportBeanDefinitionRegistrar接口详解

    Spring中的ImportBeanDefinitionRegistrar接口详解

    这篇文章主要介绍了Spring中的ImportBeanDefinitionRegistrar接口详解,ImportBeanDefinitionRegistrar接口是也是spring的扩展点之一,它可以支持我们自己写的代码封装成BeanDefinition对象,注册到Spring容器中,功能类似于注解@Service @Component,需要的朋友可以参考下
    2023-09-09
  • springboot使用小工具之Lombok、devtools、Spring Initailizr详解

    springboot使用小工具之Lombok、devtools、Spring Initailizr详解

    这篇文章主要介绍了springboot使用小工具之Lombok、devtools、Spring Initailizr详解,Lombok可以代替手写get、set、构造方法等,需要idea装插件lombok,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • MyBatis传入数组集合类并使用foreach遍历

    MyBatis传入数组集合类并使用foreach遍历

    这篇文章主要介绍了MyBatis传入数组集合类并使用foreach遍历,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 在Spring框架下配置Quartz集群的详细步骤(MySQL数据源)

    在Spring框架下配置Quartz集群的详细步骤(MySQL数据源)

    Quartz 是一个功能强大的调度库,可以在 Java 应用中用于执行定时任务,本文将介绍如何在 Spring 框架下配置 Quartz 集群,并使用 MySQL 作为数据源来存储调度信息,文中有详细的代码供大家参考,需要的朋友可以参考下
    2025-01-01

最新评论