使用Java的IO流来下载word文件,文件名称乱码
时间: 2023-12-05 20:03:24 浏览: 107
在使用Java的IO流下载文件时,如果文件名存在中文或特殊字符,就会出现文件名乱码的问题。这是因为Java默认使用ISO-8859-1编码进行URL编码,而ISO-8859-1编码不支持中文和特殊字符。
解决方法如下:
1. 获取文件名并进行URL编码
```
String fileName = "测试文件.docx";
fileName = URLEncoder.encode(fileName, "UTF-8");
```
2. 设置Content-Disposition响应头
```
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
```
完整的代码示例:
```
// 获取文件名并进行URL编码
String fileName = "测试文件.docx";
fileName = URLEncoder.encode(fileName, "UTF-8");
// 设置响应头
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 下载文件
InputStream inputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
outputStream.flush();
outputStream.close();
inputStream.close();
```
阅读全文