Java Web文件下载2——文件下载乱码处理

本文介绍了处理Java Web文件下载时可能出现的中文乱码问题。通过将文件名转换为Unicode字符避免服务器编码差异,同时在前端和后端进行加密解密确保文件名正确传递。在下载响应中,利用浏览器自动处理乱码的功能,设置Content-Disposition头来展示友好文件名。
摘要由CSDN通过智能技术生成

这是我在导出excel文件供用户下载时遇到的:

流程:
1、文件生成,文件全名名由路径加文件名构成,路径配置在数据库中动态读取,名称由时间加汉字构成。生成 的文件将存放在数据库中配置的路径中
2、前台页面显示出文件列表,点击下载,将文件名传到后台去,后台通过读取数据库配置的路径加上传过来的 文件名去寻找该文件
3、从指定文件中读取数据,设置相关信息,完成下载

 

中文乱码处理:
1、生成文件系统的实体文件时,文件名不存放汉字,而是将文件名(不用包括路径)转成Unicode 字符,即,使用URLEncoder.encode("文件名","UTF-8"),然后再去由该名称生成实体文件,当然这样的文件名在服务器上不解码是看不懂的,之所以这么做是为了防止有的服务器对中文编码不同,直接存放通用的Unicode码,解决后顾之忧。当然没有加密过的原来的文件名,也就是大家都认识的文件名还是要保存起来的,比如存到数据库中去,因为页面上显示的是要能看懂的!
2、前台显示文件名列表,将要下载的文件名传到后台去。传之前要通过js进行加密操作,同样转换成unicode字 符,传到后台之后,后台解密,可以得到正确的中文文件名称,不过此时得到的文件名没什么用,权当看一看文件名对不对吧!因为这时候通过这个文件全名来到服务器上读取文件肯定会报错的,FileNotFoundException

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值