SpringMVC 文件下载时 浏览器不能正确显示另存的文件名

问题:通过打印输出流的方式把文件下载到本地,但是在firebox 中 下载的文件不显示文件的文件名,造成文件不能直接打开,其他浏览器可以直接打开.

原因: 主要是文件名称中有汉字而没有转码造成firebox浏览器不能正确显示另存的文件名

解决方案:

//提供如下工具类将 文件名编码 就可以啦
public static String toUtf8String(HttpServletRequest request, String s) { 
        String agent = request.getHeader("User-Agent"); 
        try { 
            boolean isFireFox = (agent != null && agent.toLowerCase().indexOf("firefox") != -1); 
            if (isFireFox) { 
                s = new String(s.getBytes("UTF-8"), "ISO8859-1"); 
            } else { 
                s = toUtf8String(s); 
                if ((agent != null && agent.indexOf("MSIE") != -1)) { 
                    // see http://support.microsoft.com/default.aspx?kbid=816868 
                    if (s.length() > 150) { 
                        // 根据request的locale 得出可能的编码 
                        s = new String(s.getBytes("UTF-8"), "ISO8859-1"); 
                    } 
                } 
            } 
        } catch (UnsupportedEncodingException e) { 
        	 log.error("将文件名中的汉字转为UTF8编码的串时错误,输入的字符串为:" + s); 
        } 
        return s; 
    }

不兼容浏览器: firebox

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Albert陈凯

2018-11-28 学习SpringBoot的福音~Spring Boot 全家桶 SpringBootBucket

Spring Boot 现在已经成为Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。

1425
来自专栏王肖的UT

Assimp Android 编译

3254
来自专栏猿天地

Elastic-Job-Spring-Boot-Starter简化你的任务配置

介绍 Elastic-Job Spring Boot 自动集成,只需要一个注解即可发布Job。 GitHub地址:https://github.com/yinj...

8108
来自专栏zcqshine's blog

PHP 下载文件

4095
来自专栏世界第一语言是java

springboot2新版springcloud微服务全家桶实战

本篇文章是springboot2.x升级后的升级springcloud专贴,因为之前版本更新已经好久了,好多人评论可不可以出个新版本,大家一定要注意,这是spr...

4.1K2
来自专栏技术小站

Spring,@Controller,@RequestMapping, @ResponseBody,@RequestParam

1073
来自专栏灯塔大数据

15 个 Android 通用流行框架大全

? 1 缓存 名称描述DiskLruCacheJava实现基于LRU的磁盘缓存 2 图片加载 名称描述Android Universal Image Lo...

3166
来自专栏KaliArch

快捷安装不同版本Python

1305
来自专栏王磊的博客

react native一键分享功能实现&原理和注意点(支持微信、qq、新浪微博等)

前言 目前使用一键分享比较主流的两个SDK:ShareSDK、友盟; 又因为友盟功能比较多且比较全,比如说友盟统计、友盟推送等,所以本文重点介绍的是友盟分享功能...

4789
来自专栏腾讯Bugly的专栏

腾讯Bugly Unity3D Plugin使用指南

概述 Bugly Unity Plugin是专为基于Unity引擎开发的跨移动平台(iOS/Android)游戏APP而开发的异常监控插件,它能够自动捕...

5395

扫码关注云+社区

领取腾讯云代金券