文件下载主要使用HttpServletResponse这个对象,只需要得到一个文件流,然后将这个文件流写入HttpServletResponse的输出流即可。
关键代码:
@GetMapping("/download")
public void fileDownload(@RequestParam("fileName") String fileName,HttpServletResponse response){
InputStream in;
BufferedInputStream bis;
ServletOutputStream outputStream = null;
try {
//D:\\upload/a.jpg
in=new FileInputStream(uploadPath+File.separator+fileName);
bis=new BufferedInputStream(in);
response.setHeader("content-type","application/force-download");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
outputStream = response.getOutputStream();
byte[] buffer=new byte[1024];
int len=0;
while((len=in.read(buffer))!=-1){
outputStream.write(buffer,0,len);
}
outputStream.flush();
outputStream.close();
in.close();
System.out.println("下载成功");
} catch (FileNotFoundException e) {
System.out.println("文件未找到");
} catch (IOException e) {
e.printStackTrace();
}
}
只需要将文件输入流,写入到HttpServletResponse的输出流中,即可,响应到前端浏览器,浏览器将会以附件的形式打开此文件—也就是下载。