SpringMVC返回图片的几种方式(小结)
在SpringMVC中,我们可以使用多种方式返回图片。本文将介绍三种常用的方式:使用ResponseEntity
返回图片、使用@ResponseBody
注解返回图片、使用HttpServletResponse
输出流返回图片。
使用ResponseEntity返回图片
以下是一个使用ResponseEntity
返回图片的示例。
@GetMapping("/image")
public ResponseEntity<byte[]> getImage() throws IOException {
InputStream in = getClass().getResourceAsStream("/image.jpg");
byte[] imageBytes = IOUtils.toByteArray(in);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
headers.setContentLength(imageBytes.length);
return new ResponseEntity<>(imageBytes, headers, HttpStatus.OK);
}
在上面的示例中,我们创建了一个名为getImage
的控制器方法,并使用ResponseEntity
返回图片。在方法中,我们使用getClass().getResourceAsStream
方法获取图片的输入流,并使用IOUtils.toByteArray
方法将输入流转换为字节数组。然后,我们创建一个HttpHeaders
对象,并设置Content-Type
和Content-Length
头信息。最后,我们使用ResponseEntity
将字节数组、头信息和状态码封装为一个响应实体,并返回给客户端。
使用@ResponseBody注解返回图片
以下是一个使用@ResponseBody
注解返回图片的示例。
@GetMapping(value = "/image", produces = MediaType.IMAGE_JPEG_VALUE)
@ResponseBody
public byte[] getImage() throws IOException {
InputStream in = getClass().getResourceAsStream("/image.jpg");
byte[] imageBytes = IOUtils.toByteArray(in);
return imageBytes;
}
在上面的示例中,我们使用@ResponseBody
注解将字节数组直接返回给客户端。我们还使用produces
属性指定响应的Content-Type
为image/jpeg
。
使用HttpServletResponse输出流返回图片
以下是一个使用HttpServletResponse
输出流返回图片的示例。
@GetMapping("/image")
public void getImage(HttpServletResponse response) throws IOException {
InputStream in = getClass().getResourceAsStream("/image.jpg");
byte[] imageBytes = IOUtils.toByteArray(in);
response.setContentType(MediaType.IMAGE_JPEG_VALUE);
response.setContentLength(imageBytes.length);
response.getOutputStream().write(imageBytes);
response.getOutputStream().flush();
}
在上面的示例中,我们使用HttpServletResponse
的输出流将字节数组写入响应中。我们还使用setContentType
和setContentLength
方法设置响应的Content-Type
和Content-Length
头信息。
总结
本文介绍了三种常用的方式在SpringMVC中返回图片。我们可以使用ResponseEntity
返回图片、使用@ResponseBody
注解返回图片、使用HttpServletResponse
输出流返回图片。通过本文的介绍,我们可以了解到SpringMVC返回图片的基本原理和使用方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC返回图片的几种方式(小结) - Python技术站