java stream download file
See the conventional method of downloading files using streaming:
@RequestMapping("/fileDownLoad")
public void fileDownLoad(HttpServletResponse response, @RequestParam("id") Long id) {
log.info("……fileDownLoad………start………");
if (null == id) {
return;
}
FileUploadRecord fileUploadRecord = iFileUploadRecordService.selectFileUploadRecordById(id);
String Address = fileUploadRecord.getFileAddress();
String filenamedisplay = null;
filenamedisplay = Address.substring(Address.lastIndexOf(File.separator) + 1);
log.info("文件名称为:" + filenamedisplay);
File file = new File(Address);
if (file.exists()) {
OutputStream os = null; // 输出流
InputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[in.available()];
in.read(buffer);
in.close();
response.reset();
response.setCharacterEncoding("utf-8");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;fileName=" + new String(filenamedisplay.getBytes(), "iso-8859-1"));
os = new BufferedOutputStream(response.getOutputStream());
os.write(buffer);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != os) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Note here: ①Download content encoding format response.setCharacterEncoding (“utf-8”);
②If the file name is in Chinese, it cannot be displayed, please see the processing method here: response.setHeader (“Content-Disposition”, “attachment; fileName = ”+ New String (filenamedisplay.getBytes (),“ iso-8859-1 ”));
So that you can download the file showing the Chinese name