SpringMVC的文件下载

完成文件的下载,我们首先需要有对应的资源,在我们的程序中,webapp下有一个文件夹images,这里面包含了几张图片,那我们就使用图片作为我们需要下载的资源来用。

中文名文件下下载乱码的处理:

文件在下载的过程中,如果文件名称中包含的有中文,就会出现中文乱码的情况。针对于下载文件名称中包含中文的处理是必须,因为中文在编码和解码的问题上总是不太那么的流畅。下面我们来对中文文件名进行一个处理。

(1)在pom.xml 文件中,引入codec 的 maven 坐标,在编解码的时候我们需要用到 Base64 这个工具类。


<l-- hcommons-codec, base64转码需要 --><dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId><version>1.10</version>

</dependency>


(2)在控制器中,新增加一个方法,专门为中文文件名来工作,在这个处理中文文件名的过程中,要把火狐浏览器单独区分开来,因为在这个浏览器中,对中文的编解码使用的就是 Base64,IE浏览器使用时 URLEncoder。


//针对中文名称,需要分浏览器来处理
pub1ic String getNewFileName(HttpServletRequest request,String filename){
try{
//获取请求头部信息的User-Agent对应的值
String request_str=request.getHeader("User-Agent");
if(request_str.toUpperCase().index0f("FIREFOX")>0){//火郭浏览器
filename:"=?UTF-8?B?"+(new
String(Base64.encodeBase64(filename.getBytes("utf-8"))))+"?=";
}e1se{//其他浏览器
filename = URLEncoder.encode(filename, "utf-8");
}catch(Exception e){
e.printstackTrace();}
return filename;}


(3)接下来,在我们设置响应头信息的时候,不能直接传入文件的名字,而是使用处理之后的文件名字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值