比如说,下载的文件名为: 软件分析报告.docx,当使用流抛给浏览器下载时,浏览器下载的文件为:-----------.docx

出现这种情况的原因:大体的原因就是header中只支持ASCII,所以我们传输的文件名必须是ASCII,所以说当文件名为中文时,必须要将该中文转换成ASCII。

  1. // 文件名可以任意指定
  2. response.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(filename,"UTF-8"));

其中  URLEncoder.encode(filename,"UTF-8") 就是将文件名转为ASCLL

java实现浏览器下载:

  1. public void downloadFile(String id, HttpServletResponse response) {
  2. if(!StringUtils.isEmpty(id)) {
  3. GridFSDBFile gridFSDBFile = dynamicService.getGridFSDBFile(Integer.parseInt(id));//从mongodb上获取文件信息
  4. int buffer = 1024 * 10;
  5. byte data[] = new byte[buffer];
  6. InputStream inputStream = gridFSDBFile.getInputStream();//获取输入流
  7. BufferedInputStream bis = new BufferedInputStream(inputStream, buffer);
  8. try {
  9. String filename = gridFSDBFile.getFilename();
  10. response.setContentType(FileUtils.getContentType(filename));
  11. // 文件名可以任意指定
  12. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename,"UTF-8"));//将文件名转为ASCLL编码
  13. int read;
  14. while ((read = bis.read(data)) != -1) {
  15. response.getOutputStream().write(data, 0, read);
  16. }
  17. inputStream.close();
  18. bis.close();
  19. } catch (UnsupportedEncodingException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. } catch (IOException e) {
  23. // TODO Auto-generated catch block
  24. e.printStackTrace();
  25. }
  26. }
  27. }

java把流抛给浏览器下载时,当下载的文件文件名为中文时,出现中文名被替换为“----------”的情况的更多相关文章

  1. 文件下载文件名包含中文时,乱码的处理方法(url编解码)

    utf-8/gbk编码 "中"这个汉子的utf-8编码为:E4B8AD gbk编码为:D6D0 urlencode 经过urlencode编码后, %E4%B8%AD %D6%D0 ...

  2. FTP目录或文件名有中文时导致,下载失败的问题

    在FTPClient ftpClient = new FTPClient()代码后, ftpClient.connect(url,port)代码前, 调用ftpClient.setAutodetect ...

  3. 解决python中write()函数向文件中写中文时出现乱码的问题

    今天看<python编程从入门到实践>的第10章文件.异常,在做练习的时候,向文件中写内容,但是写中文就不行,后来在百度上查了众多资料,解决方法如下: 解决:在open()函数中添加一个e ...

  4. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

  5. java IO流 之 字节流

    一.file类的常用操作 File file=new File("E:\\test\\javaIo"); System.out.println(file.isDirectory() ...

  6. java——IO流01

    移动文件有一种简单方法,不需要复制文件再删除文件. package com.unir.test01; import java.io.File; import java.io.IOException; ...

  7. nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题

    公司项目逐渐增多,对效率的要求越来越高,不同项目分部不同服务器,最初想用nginx 就是为了多个项目用一个url和服务器宕机解决方案 nginx也可作为附件服务器,毕竟nginx也对静态文件支持较好, ...

  8. java io流 运行错误时,保存异常到文件里面

    java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...

  9. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

随机推荐

  1. pycharm 设置py文件的默认模版头部信息

    pycharm 设置py文件的默认模版头部信息,打开设置settings 进入File->settings->Editor->File and Code Templates-> ...

  2. Linux上jdk安装及环境变量设置

    1.jdk下载和安装 (1)http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载需 ...

  3. Python windows serial

    Python windows serial 一.参考文章: Serial port programming http://www.cnblogs.com/2zhyi/p/3405339.html py ...

  4. LG2831 愤怒的小鸟

    题意 分析 看n的范围只有18,考虑状压dp. 用\(f(s)\)表示过集合s中的点所需最小的抛物线数量. 然后枚举点对算抛物线,判断其他点是否在抛物线上来转移. 细节 判断能否构成抛物线只需要判断斜 ...

  5. coredns 代理consul 运行noamd 部署的应用

    nomad 是一个方便的应用调度平台,consul 一个很不错的服务发现工具,coredns 很不错, 扩展性比较强的dns 服务器,集成起来可能做很强大的事情 我的运行环境是mac,实际情况按需部署 ...

  6. list_for_each与list_for_each_entry具体解释

    一.list_for_each 1.list_for_each原型#define list_for_each(pos, head) \     for (pos = (head)->next, ...

  7. Windows 10 上的 Git 如何清除密码? Git Credential Manager for Windows

    Windows 10 上的 Git 如何清除密码? 因为一台新的电脑是 Windows 10 在第一次使用 Git 要求输入密码时把密码给输错了. 之前提交都是说 Token 错了,不再出现提示密码. ...

  8. 2.运行成功的Demo(Python+Appium)

    1.打开Appium运行 2.在Pycharm输入代码如下所示: from appium import webdriver desired_caps = {} #初始化 desired_caps['p ...

  9. 学习blus老师js(6)--js运动基础

    运动基础 一.匀速运动 运动框架 在开始运动时,关闭已有定时器 把运动和停止隔开(if/else) <!DOCTYPE HTML> <html> <head> &l ...

  10. 在Eclipse里静态导入

    静态导入import static 介绍见import static和import的区别 在Eclipse里配置静态导入,步骤见下面截图的箭头 例如导入下面的jar 常用的静态导入方法如下: com. ...