Spring Boot版本 2.5.0
response.setContentType("image/*")的位置影响了下载和预览
放在获取读取文件流并赋值给putputStream之后是预览
@ApiOperation("显示图片")
@GetMapping("/showImage")
public void getImg(HttpServletResponse response) throws IOException {
response.reset();
response.setCharacterEncoding("utf-8");
ServletOutputStream outStream = response.getOutputStream();
String path = "F:\\JC_T\\003W6jfdly1gtvkk0uzwuj68zh6qm7wl02.jpg";
File file = new File(path);
FileCopyUtils.copy(new FileInputStream(file), outStream);
response.setContentType("image/*");
outStream.flush();
outStream.close();
}
效果如图
放在获取读取文件流并赋值给putputStream之前是下载
@ApiOperation("显示图片")
@GetMapping("/showImage")
public void getImg(HttpServletResponse response) throws IOException {
response.reset();
response.setCharacterEncoding("utf-8");
ServletOutputStream outStream = response.getOutputStream(); //得到向客户端输出二进制数据的对象
String path = "F:\\JC_T\\003W6jfdly1gtvkk0uzwuj68zh6qm7wl02.jpg";
File file = new File(path);
response.setContentType("image/*");
FileCopyUtils.copy(new FileInputStream(file), outStream);
outStream.flush();
outStream.close();
}
效果如图
有没有大佬能解释下
在获取读取文件流并赋值给 putputStream 之前调用 response.setContentType("image/*"),浏览器就会将响应的内容视为下载文件,并弹出文件下载对话框供用户保存文件。
这种情况下,浏览器并不会在页面上直接预览响应的内容,而是弹出文件下载对话框让用户保存文件。
这是因为当浏览器接收到响应时,它会根据响应的内容类型来决定如何处理响应的内容。如果将响应的内容类型设置为图像,那么浏览器会将响应的内容视为图像,并尝试在页面上预览;如果将响应的内容类型设置为下载文件,那么浏览器会将响应的内容视为下载文件,并弹出文件下载对话框供用户保存文件。
因此,当你在获取读取文件流并赋值给 putputStream 之前调用 response.setContentType("image/*") 时,浏览器会将响应的内容视为下载文件,并弹出文件下载对话框供用户保存文件。