Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何通过指向RESTAPI的href标记显示图像?_Html_Spring Boot - Fatal编程技术网

Html 如何通过指向RESTAPI的href标记显示图像?

Html 如何通过指向RESTAPI的href标记显示图像?,html,spring-boot,Html,Spring Boot,我正在构建一些web应用程序。在我的前端,我需要显示先前上传到spring boot hsqldb的图像。图像数据以BLOB类型存储在数据库中。我想将它们显示为: <img href="/api/photos/0"> 这是我的spring boot api控制器: @GetMapping(value = "/photos/{id}") public String readPhoto(@PathVariable Long id){ return mak

我正在构建一些web应用程序。在我的前端,我需要显示先前上传到spring boot hsqldb的图像。图像数据以BLOB类型存储在数据库中。我想将它们显示为:

<img href="/api/photos/0">
这是我的spring boot api控制器:

    @GetMapping(value = "/photos/{id}")
    public String readPhoto(@PathVariable Long id){
        return makePhotoUrl(photosRepository.findById(id).get().getData());
    }

    private String makePhotoUrl(byte[] photo){
        String photoUrl = "data:image/jpeg;base64," + 
        Base64.getEncoder().encodeToString(photo);
        return photoUrl;
    }
我确实通过浏览器直接访问url来获取图像数据,但我的卡仍然是空的


请帮助我,因为我不知道如何使它工作。

所以,经过一天的研究,我终于找到了答案。基本上我犯了两个错误。 首先,href指定链接目的地,但只能与“a”标记一起使用:


如果我想指定img源,我应该使用“src”:


其次,若我想从api直接返回url,那个么它必须指向一个物理文件。我可能错了,请纠正我。 我已将控制器更改为:

public ResponseEntity readPhotoById(长id){
Photo Photo=photosRepository.findById(id.get();
返回ResponseEntity.ok()
.contentType(MediaType.parseMediaType(photo.getType()))
.header(HttpHeaders.CONTENT\u处置,“附件;文件名=\”“+photo.getName()+”\“”)
.body(新的ByteArrayResource(photo.getData());
}
现在,它的工作如预期

干杯:)

    @GetMapping(value = "/photos/{id}")
    public String readPhoto(@PathVariable Long id){
        return makePhotoUrl(photosRepository.findById(id).get().getData());
    }

    private String makePhotoUrl(byte[] photo){
        String photoUrl = "data:image/jpeg;base64," + 
        Base64.getEncoder().encodeToString(photo);
        return photoUrl;
    }