Spring Boot 文件下载:乱码问题
第一次使用Spring boot 时下载文件保存时,英文名称是没有问题的,但是,有中英混血的话就会出现乱码问题
在本人电脑D盘目录下有一个PDF文件:Java调用POI组件操作Excel.pdf
控制器代码:
@RequestMapping("/download")
public String downloadFile(HttpServletRequest request, HttpServletResponse response) throws IOException{
String fileName = "Java调用POI组件操作Excel.pdf";
if (fileName != null) {
File file = new File("D:\\"+fileName);
if (file.exists()) {
response.setContentType("application/force-download");
response.addHeader("Content-Disposition","attachment;fileName=" +fileName);
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
System.out.println("下载成功...");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null)
bis.close();
if (fis != null)
fis.close();
}
}
}
return null;
}
HTML代码:
<!DOCTYPE html> <html lang="en"> <head> <title>文件下载</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <a href="/download">下载</a> </body> </html>
咿呀呀,可以下载但是:
百度了半天,折腾死自己:
这样改点击下载没反应:
//初始代码:String fileName = "Java调用POI组件操作Excel.pdf"; //修改后代码:问题没解决 String fileName = new String("Java调用POI组件操作Excel.pdf".getBytes("UTF-8"),"iso-8859-1");
关键点在这里:
//初始代码:response.addHeader("Content-Disposition","attachment;fileName=" +fileName);
//修改后代码:问题解决
response.addHeader("Content-Disposition","attachment;fileName=" +new String(fileName.getBytes("UTF-8"),"iso-8859-1"));
看图片: