java 文件下载没有后缀乱码
时间: 2023-11-25 08:47:45 浏览: 94
在Java文件下载过程中,如果文件没有后缀名,可能会导致浏览器无法正确解析文件类型,从而出现乱码的情况。为了解决这个问题,可以在下载时设置Content-disposition头部信息,指定文件名及后缀名。同时,还需要注意浏览器的编码问题,不同浏览器对于文件名编码方式不同,需要进行相应的处理。可以参考以下代码实现文件下载并解决乱码问题:
response.setContentType("multipart/form-data");
String userAgent = request.getHeader("User-Agent");
String oriFileName = "文件名"; // 文件名
String formFileName = oriFileName;
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) { // IE浏览器
formFileName = java.net.URLEncoder.encode(formFileName, "UTF-8");
} else { // 非IE浏览器
formFileName = new String(formFileName.getBytes("UTF-8"), "ISO-8859-1");
}
response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", formFileName));
response.setContentType("application/octet-stream;charset=utf-8");
response.setCharacterEncoding("UTF-8");
ServletOutputStream out;
File file = new File("文件路径");
if (file.exists()) {
out = response.getOutputStream();
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
fis.close();
out.close();
}
阅读全文