当前位置: 首页 > 知识库问答 >
问题:

Spring:如何在@RESTController中返回base64图像

郑晗日
2023-03-14

我有base64字符串,我想使用Spring的RESTController在img标记上打印base64图像。

@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@Validated
public class TestController {

    @RequestMapping(value = "/image/test",  method = RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE)
    public byte[] getImage() throws Exception {

        String base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYIAAACzCAY...."; //from DB

        byte[] decodeBase64 = Base64.decodeBase64(base64);
        
        return decodeBase64;

    }
}
<html>
 <body>
   <img src="http://localhost:8080/myProject/image/test"/>
 <body/>
</html>

图像不输出。有什么问题?

共有1个答案

印辉
2023-03-14

您就快到了,只需从字符串中移除data:image/png;base64,part即可。这是因为在IMG src中使用的是字节而不是base64字符串。

@RequestMapping(value = "/image", method = RequestMethod.GET)
    public byte[] getImage() {
        String base64 = "<BASE64 STRING WITHOUT `data:image/png;base64,` part>";
        byte[] decodeBase64 = Base64.decodeBase64(base64);

        return decodeBase64;
    }

您的html将保持不变。

<html>
<body>
<img src=http://localhost:8080/image />
<body/>
</html>
 类似资料:
  • 和服务: 例外情况 和异常控制器 如何才能在相同的方法中返回Zip文件或json消息?问题是,produces=“application/zip”,如果不这样做,就会收到正确的错误json,但它不会下载文件,否则反之亦然,谢谢

  • 我希望能够在RestController方法(或endpoint)作为数据流序列化为HttpServletResponse之前修改它返回的POJO。但是我希望能够在控制器方法代码之外(作为中间件)完成。 我曾尝试使用HandlerInterceptor来完成此操作,但我无法访问POJO。我也尝试过使用AOP,但从未调用切入点。 我希望能够在控制器执行自己的逻辑并返回后,向控制器返回的资源添加列表(

  • 我试图测试我的RestController代码(Spring Boot项目),但我总是得到404。以下是我目前掌握的情况: } } 结果总是这样: 我做错了什么?我已经尝试过直接在setUp方法中用标准设置()初始化mockmvc,我还使用了@SpringBootTest和@AutoConfigreMockMvc相结合。 有人有什么有用的提示吗?我使用spring boot 2.1.4。 谢谢

  • 我正在为我的REST Web服务使用Spring@RESTController。我尝试在rest方法中返回ResponseEntity对象的对象,而不是返回ModelAndView的对象。对于Strgin类型的响应,当我用一个Jaxbobject构建ResponseEntity时,它会给出HTTP错误406 下面不起作用

  • 我在Spring Boot服务中有一个rest控制器,如下所示: 我可以让服务生成八位元组流和application/Json,但我的困惑在于出现错误时字节数组的返回类型,在这种情况下,我希望生成Json而不是字节数组 请给我出主意如何解决这个问题

  • 我有一个Spring MVC控制器,方法如下: 它位于一个开始如下所示的控制器内部: 我使用的是Spring WebMVC 4.1.3和Jackson 2.4.3。我尝试在RequestMapping中添加一个“produces”属性,表示它应该返回JSON。在本例中,发回的Content-Type属性是“application/json”,但仍然没有引用测试字符串。 我可以通过调用JSON库将J