SpringBoot 浏览器下载文件,中文文件名乱码解决

2018 年 9 月 17 日 2 条评论 12.8k 次阅读 1 人点赞

老问题了,其实有很多解决方法,网上也有很多案例,但很多都或多或少的有些小问题。今在此记录一下,文件名乱码时的正确解决方案:(前提:项目采用的时UTF-8编码)
一般情况下,纯英文的文件名都是没问题的,但是中文的会有问题。

这个方法只能解决纯中文的文件名,如果是中英混合的还是会出问题:

 String fileName = "我是中文的文件名称.doc";
 response.setContentType("multipart/form-data"); 
 //response.setContentType("multipart/form-data;charset=UTF-8");也可以明确的设置一下UTF-8,测试中不设置也可以。 
 response.setHeader("Content-Disposition", "attachment; fileName="+  fileName +";filename*=utf-8''"+URLEncoder.encode(fileName,"UTF-8"));

 

稍加改动一下就可以完美支持中英混合的文件名了:

String fileName = "我是文件名Word文件.doc";
response.setContentType("multipart/form-data"); 
response.addHeader("Content-Disposition","attachment;fileName=" +new String(fileName.getBytes("UTF-8"),"iso-8859-1"));

 

雷雷

这个人太懒什么东西都没留下

文章评论(2)

  • hatxd

    springboot浏览器下载文件的代码呢,能不能分享一下

    2019 年 4 月 10 日
    • 雷雷

      @hatxd 这里没有太多东西哦~ 直接IDEA创建个springboot项目,或者spring官网下载一个都可以的。controller 返回时,设置这些参数就可以。

      2019 年 5 月 22 日
  • (Spamcheck Enabled)