java后台的下载
需要设置header的内容
// 配置文件下载
response.setContentType("multipart/form-data");
response.addHeader("Content-Length", String.valueOf(file.length()));
response.setCharacterEncoding(String.valueOf(StandardCharsets.UTF_8));
// 下载文件能正常显示中文
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
其中Content-Disposition设置为attachment是下载的关键。这个头信息就是告诉浏览器要做下载操作。
剩余代码就是io操作,(方法返回值不会影响下载内容。)
// 实现文件下载
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("Download the song successfully!");
}
catch (Exception e) {
System.out.println("Download the song failed!");
}
finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}