SpringBoot使用@ResponseBody返回图片的实现
以前使用HttpServletResponse可以通过输出流的方式来向前台输出图片。现在大部分都是使用springboot,在使用springboot之后,我们应该如何来修改代码呢?
Spring Boot项目搭建配置略过,可直接从官网简历一个demo
首先写一个Controller类,包括一个方法,如下:
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.FileInputStream;
@RestController
@RequestMapping(value="/api/v1")
public class ImageController {
@GetMapping(value = "/image",produces = MediaType.IMAGE_JPEG_VALUE)
@ResponseBody
public byte[] test() throws Exception {
File file = new File("E://tmp//1.jpg");
try(FileInputStream inputStream = new FileInputStream(file)){
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes, 0, inputStream.available());
return bytes;
}
}
}
我们首先在@GetMapping上加入produces告诉Spring,我们要返回的MediaType是一个图片(image/jpeg),然后加上@ResponseBody注解,方法返回byte[],然后将图片读进byte[],不加produces会报错。
特别提醒:
必须加produces属性,否则springboot无法自动的选择对应的解析器处理。
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/243820.html