gpt4 book ai didi

java - 如何将图片返回给客户端?

转载 作者:行者123 更新时间:2023-12-02 05:18:43 26 4
gpt4 key购买 nike

我需要一些帮助来完成一个项目,我正在做类似 9gag 的事情,我试图返回一个 JSON 对象,其中有一些数据和图像。

我尝试了几种方法,以字节数组返回图像并将 GetMapping 注释设置为 Produce =“image/jpeg”。我也尝试过使用 Base64 来做到这一点,但由于我是使用 Base64 的新手,所以我不完全确定我是否正确使用它。

@GetMapping(value = "/")
public List<PostDTO> browseAll() throws IOException {
List<Media> dbMedia = mediaRepo.findAll();
List<PostDTO> postDTOS = new ArrayList<>();
for (Media media : dbMedia){
postDTOS.add(media.convertToPostDTO());
}
for (PostDTO post : postDTOS){
post.setFile(returnImage());
}
return postDTOS;
}
private String returnImage() throws IOException {
List<Media> media = mediaRepo.findAll();
for (Media file : media){
File newImage = new File(file.getDir());
FileInputStream fis = new FileInputStream(newImage);
String encoded = Base64.getEncoder().encodeToString(fis.readAllBytes());
String imgData = "data:image/jpeg;base64," + Base64Utils.decodeFromString(encoded);

return imgData;

}
return "failed";
}

通过使用 Produce =“image/jpec”,我得到了这个 --“已解决 [org.springframework.web.HttpMediaTypeNotAcceptableException:无法找到可接受的表示]” 另外,我正在使用 Postman 进行测试。这里还有一个 Json 对象的样子,在"file"中我想要实际的图像。

    {
"author": "Uponn",
"title": null,
"likes": 0,
"file": "data:image/jpeg;base64,[B@3acfd4dd",
"uploadTime": null
},

最佳答案

根据上面的讨论,如果我的理解是正确的,你需要将图像发送给前端工程师,以便他们能够在网页中显示。我在下面提供了代码片段,你可以尝试一下。

@GetMapping(value = "/showImage", produces = "image/jpg")
public ResponseEntity<byte[]> getImageAsResponseEntity(
@RequestParam("fileName") String fileName) {
String dirPath = "some path in your drive/";
HttpHeaders headers = new HttpHeaders();
InputStream in = null;
byte[] media = new byte[0];
try {
in = new FileInputStream(dirPath + fileName);
media = IOUtils.toByteArray(in);
} catch (IOException e) {
e.printStackTrace();
}
ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(media, headers, HttpStatus.OK);
return responseEntity;
}

关于java - 如何将图片返回给客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56279578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com