首页 > 解决方案 > 如何在 Spring Boot 中读取 Blob

问题描述

我是 Spring Boot 的初学者,我在我的 MySQL 数据库中保存了多个文件,如下所示,它工作正常,现在我想检索保存的文件

我不明白如何读取 blob 数据以及如何转换为显示用户的 URL。

控制器

@RequestMapping(value = "/getUser", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
@ResponseBody
public DBFile getUserById(@RequestBody DBFile dBFile ) {
    DBFile record = employeeRepository.findById(dBFile.getId());
    return record;
}

存储库

public interface MultipartRepository1 extends JpaRepository<DBFile, Integer{}

DTO

@Entity
@Table(name = "files")
public class DBFile {

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    private String id;
    private String file_name;
    private String file_type;
    @Lob
    private byte[] data;

    public DBFile() {

    }

    public DBFile(String file_name, String file_type, byte[] data) {
        this.file_name = file_name;
        this.file_type = file_type;
        this.data = data;
    }


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getFile_name() {
        return file_name;
    }

    public void setFile_name(String file_name) {
        this.file_name = file_name;
    }

    public String getFile_type() {
        return file_type;
    }

    public void setFile_type(String file_type) {
        this.file_type = file_type;
    }

    public byte[] getData() {
        return data;
    }

    public void setData(byte[] data) {
        this.data = data;
    }

}

桌子

673e148e-a209-45c8-914c-7016dd59542f    BLOB    home_beach.jpg      image/jpeg
a55777bc-5fda-41a7-a589-3731ae418262    BLOB    beach-houses.jpg    image/jpeg
ce3f502c-f780-4a7d-a7d1-e678adfa367d    BLOB    theahotel_logo.png  image/png

标签: mysqlspring-boot

解决方案


Spring boot 将自动将您的 blob 字段作为 base64 字符串返回,例如

{"data": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAABfAAAAXwBsrqMZwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADdSURBVEiJtZTLCoUgEIZNaG90EfIFhXxTW6WbfJn/LA5xzOpUMg7MZmb4PvAyFWMMrGDwp4NSSqa1zpLgLqWU8N4DAIwxt/NJ/h9QSiGEAACw1kIIQSeI4fM8o2mat/BrQQxflgVd1+XAzwUpvO/7XPhRQAzfC2K4c44C/hOk8GEYKOBfQQz33lPCwdq2hXMOpYLXdc04f7wxsmK3CohezvGShRCw1gIA1nXFOI60goKSfaGA5Fgklpw3CCXXzVSilKIVpJIQQo7kfij+J9M00Qs2idb69RFVm6VUfACZhb1lipibXgAAAABJRU5ErkJggg=="}

您可以从端点仅返回该字段。然后将其转换为客户端应用程序上的图像。


推荐阅读