Safari浏览器导出数据(excel)文件名乱码, 无后缀问题

最近在做导出数据的功能. 碰到浏览器兼容问题。

同样的接口在谷歌、IE 没有问题 ,Safari 文件名就会乱码. 深究考虑 可能是 他们内边的人喜欢使用ISO8859-1 (苹果就是这么 NB,不管中国多大市场 也不用UTF-8编码)

所以只能根据浏览器的代理做个判断, 就这么简单点事. 百度了好久.  在这里记录下,同样犯错误的同仁参考下。

//解决 苹果浏览器乱码问题 - 
val ua = request.getHeader("User-Agent").toLowerCase
logger.info("ua:%s", ua)
val filename = if (ua.indexOf("macintosh") > -1 && ua.indexOf("chrome") < 0) {
    logger.info("浏览器: safari")
    new String(file.getName().getBytes, "iso8859-1")
} else {
	URLEncoder.encode(file.getName(), "utf-8")
}

//重置输出流
response.reset();
response.addHeader("Content-Disposition", "attachment;filename=" + filename) //设置文件名
response.addHeader("Content-Length", file.length.toString) //设置下载文件大小
response.setContentType("application/vnd.ms-excel;charset=utf-8")  //设置文件类型
//读取文件数据
val fis = new FileInputStream(fileName)
val outPutStream = response.getOutputStream
if (fis.available != 0) {
	response.setStatus(200)
}
IOUtils.copy(fis, outPutStream)
fis.close
response.end

 

转载于:https://my.oschina.net/u/2505806/blog/783819

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值