java - Spring - 将图像作为字节数组存储在数据库中并检索它们

标签 java android spring

所以我正在开发一个 Android 应用程序,您可以在其中拍照并将其保存在后端。在后端,保存图片的实体是这样的:

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApplicationUser {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Lob
    private byte[] imageBytes;
}

从我的 Android 应用程序中,我获取一张图片,获取其位图,压缩为字节数组,然后将其发送到后端。当字节数组到达服务器时,它看起来像这样:{-1, 30, 50 ...},但是当它保存到数据库时,它会像字符串一样保存,像这样的东西:

"imageBytes": "/9j/4AAQSkZJRgABAQAAAQABAAD/....

字节数组这样保存正常吗? @Lob 正在这样做吗?主要问题:

  • 当我在我的 Android 应用程序中检索这个字符串(我希望它是一个字节数组)时,如何将其转换为 byte[] 数组,以便我可以将其转换为位图,然后转换为图像?

最佳答案

LOB 有两种类型:二进制 LOB (BLOB) 和字符 LOB (CLOB)。

您可能想使用 BLOB:

@Lob
@Column(name = "image_bytes", columnDefinition="BLOB")
private byte[] imageBytes;

关于java - Spring - 将图像作为字节数组存储在数据库中并检索它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55993377/

相关文章:

java - Prolog 连接到 Java

android - 加密字符串

java - 使用 Spring 从自定义 XML 配置创建对象网络

java - 在Spring中读取Content-Type application/json

java - java应用程序中如何存储数据?

java - Suggestbox 返回开始并包含用户输入的建议

Java - 反向词序, vector

android - Retrofit返回错误307,在android中调用web服务

android - 仅获取我的 Android 应用程序附带的区域设置列表

java - Spring Test模拟一个依赖