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
相關文章
相關標籤/搜索