SpringBoot⽂件下载及⽂件名中⽂乱码问题
/**
* 下载--测试
*/
@GetMapping("download")
public void download(HttpServletResponse response) throws SysInnerException {
String outFileName = "下载⽂件名称(中⽂).txt";
String filePath = "D:\\000\\";
Path file = (filePath, "原⽂件data-utf8 - 副本.txt");
if (ists(file)) {
// 设置Headers
/
/ response.setContentType("application/force-download");
response.setHeader("Content-Type", "application/octet-stream;charset=utf-8"); // 告诉浏览器输出内容为流
// Content-Disposition中指定的类型是⽂件的扩展名,并且弹出的下载对话框中的⽂件类型图⽚是按照⽂件的扩展名显⽰的,点保存后,⽂件以filename的值命名,保
// 该⽅式下载的⽂件名中⽂乱码问题
// response.setHeader("Content-Disposition", "attachment;filename=" + outFileName);
try {
// ⽅法1:设置下载的⽂件的名称-该⽅式已解决中⽂乱码问题,swagger,postman看到的是%...等,浏览器直接输url,OK
response.setHeader("Content-Disposition",
"attachment;filename=" + de(outFileName, ENCODING));
/
/ ⽅法2:设置下载的⽂件的名称-该⽅式已解决中⽂乱码问题,swagger,postman看到的是%...等,浏览器直接输url,OK(
// 把⽂件名按UTF-8取出并按ISO8859-1编码,保证弹出窗⼝中的⽂件名中⽂不乱码,中⽂不要太多,最多⽀持17个中⽂,因为header有150个字节限制。)
response.setHeader("Content-Disposition",
"attachment;filename=" + new Bytes(ENCODING), "ISO8859-1"));
// ⽅法3:设置下载的⽂件的名称-该⽅式已解决中⽂乱码问题,postman可以,,swagger看到的是%...等,浏览器直接输url,OK
response.setHeader("Content-Disposition", "attachment;filename=" + outFileName + ";filename*=utf-8''"
+ de(outFileName, ENCODING));
} catch (UnsupportedEncodingException e) {
message = "导⼊数据失败," + e.getMessage();
<(message);
postman的中文翻译throw new SysInnerException(message);
}
try {
} catch (IOException ex) {
message = "导⼊数据失败," + ex.getMessage();
<(message);
throw new SysInnerException(message);
}
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论