在许多地方我们后端服务器都需要为前端响应下载的功能
首先我们在download()中定义name接收前端需要下载的文件的文件名
response是我们要将下载到的数据写入其中,然后前端可以经过response获取里面的资源数据
,并显示在前端页面之上
步骤如下
1、我们先使用输入流读取我们需要的数据资源,也就是我们前端需要下载的数据资源
2、再创建一个输出流对象outputStream用于将数据写回浏览器
3、response.setContentType()限制下载文件的后缀类型
4、每次获取一些字节数据写入到bytes中,再将每次不同的bytes数据写入输出流,但无数据读时即len为-1
@GetMapping("/download")
public void download(String name , HttpServletResponse response){
try {
//使用输入流,通过输入流读取文件内容
FileInputStream fileInputStream=new FileInputStream(new File("D:\wrk\img\"+name));
//输出流,通过输出流将文件写回浏览器
ServletOutputStream outputStream = response.getOutputStream();
response.setContentType("image/jpeg");
int len=0;
byte[] bytes = new byte[1024];
while ((len=fileInputStream.read(bytes))!=-1){
outputStream.write(bytes,0,len);
outputStream.flush();
System.out.println(bytes);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}