Spring控制器将图像发送到客户端导致406
我试图在请求时将一个图像发送到前端,如果我将其作为JSON的一部分放在请求正文中,它就可以工作了,但是我想使用image/png,这更有意义,但是当我尝试这样做时,我得到了406 控制器:Spring控制器将图像发送到客户端导致406,spring,image,bytearray,http-status-code-406,Spring,Image,Bytearray,Http Status Code 406,我试图在请求时将一个图像发送到前端,如果我将其作为JSON的一部分放在请求正文中,它就可以工作了,但是我想使用image/png,这更有意义,但是当我尝试这样做时,我得到了406 控制器: @RequestMapping(value = RESTPaths.EQUIPMENT_FILE_GET_IMAGE + "/{equipmentId}", method = RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE) pu
@RequestMapping(value = RESTPaths.EQUIPMENT_FILE_GET_IMAGE + "/{equipmentId}", method = RequestMethod.GET,
produces = MediaType.IMAGE_PNG_VALUE)
public @ResponseBody byte[] insertDataFile(@PathVariable("equipmentId") final Long equipmentId)
throws InternalServerError {
return equipmentFileService.getImage(equipmentId);
}
测试(客户):
我缺少什么?尝试在servlet-context.xml文件中添加mvc注释,该文件注册了ByteArrayHttpMessageConverter
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>image/jpeg</value> <value>image/png</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
image/jpeg图像/png
已解决:
@RequestMapping(value = RESTPaths.EQUIPMENT_FILE_GET_IMAGE + "/{equipmentId}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<byte[]> getImage(@PathVariable("equipmentId") final Long equipmentId)
throws InternalServerError {
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
return new ResponseEntity<byte[]>(equipmentFileService.getImage(equipmentId), headers, HttpStatus.OK);
}
@RequestMapping(value=RESTPaths.device\u FILE\u GET\u IMAGE+“/{equipmentId}”,method=RequestMethod.GET)
@应答器
公共响应属性getImage(@PathVariable(“设备ID”)最终长设备ID)
抛出内部服务器错误{
最终HttpHeaders=新HttpHeaders();
headers.setContentType(MediaType.IMAGE\u JPEG);
返回新的ResponseEntity(equipmentFileService.getImage(equipmentId)、Header、HttpStatus.OK);
}
您能否澄清您使用的是哪个版本的Spring,它与4.1+兼容?建议的解决方案解决了您的问题了吗?还是仍然不起作用?我尝试了(使用java配置),但没有帮助,我正在查看我的版本
@RequestMapping(value = RESTPaths.EQUIPMENT_FILE_GET_IMAGE + "/{equipmentId}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<byte[]> getImage(@PathVariable("equipmentId") final Long equipmentId)
throws InternalServerError {
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
return new ResponseEntity<byte[]>(equipmentFileService.getImage(equipmentId), headers, HttpStatus.OK);
}