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

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

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

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

//解决 苹果浏览器乱码问题 - 
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
相关文章
相关标签/搜索