我将android作为前端,将Spring与Hibernate作为后端。我发送图像的字节数组以存储在该实体中:
public class ApplicationUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Lob
@Column(name = "image_bytes", columnDefinition="BLOB")
private byte[] imageBytes;
}
但是,在H2控制台中,我可以看到它以字符串形式存储了数百个字符,因此我询问字节数组已以某种方式转换为字符串。所以我的问题:
myStringThatGotReturned.getBytes()
,则会得到一个不同的字节数组(因此,基本上我不会获得正确的图像)。我想我没有以正确的方式对其进行解码。有什么办法可以弄清楚如何将该字符串解码回发送给后端的字节数组?答案 0 :(得分:1)
这是一个 JSON 转换问题。由于JSON是一种文本格式,因此通常使用数字,大写字母,小写字母和两个符号+
/
= 64个“数字”将每个字节代表6位转换为类似字节的二进制数据。
因此,JSON库的处理可能已经起作用。您可以使用
自己转换String值bytes[] b = Base64.getDecoder().decode(str);
答案 1 :(得分:0)
您可以尝试以下方法之一:
byte[] b = string.getBytes();
byte[] b = string.getBytes(Charset.forName("UTF-8"));
byte[] b = string.getBytes(StandardCharsets.UTF_8);