java读取blob并用base64码进行保存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java读取blob并用base64码进行保存相关的知识,希望对你有一定的参考价值。

代码如下:
java.sql.Blob blob = rest.getBlob("Xp");//rest为resultSet
InputStream inStream = blob.getBinaryStream();
long nLen = blob.length();
if(nLen > 0)
int nSize = (int) nLen;
byte[] data = new byte[nSize];
inStream.read(data);
inStream.close();
String rohto = new Base64().toBase(data);

此处将blob转化为byte[]有问题吗?
rohto的结果开头为"////4AAQSkZJRgABAQEBZgFm",是什么问题?谢谢

参考技术A 转换没有问题。
但是读有问题。不要指望read可以一次性完成,虽然通常可以。
请检查read的返回值。

另外建议使用try(....)格式!

base64非常简单,就是3*8=4*6的转换。
8表示一个卦8爻,6表示转换后的实际上一个卦6爻。
卦-->byte
爻-->bit
但是base64有几种不同格式,而且是谁用谁知道的方式。可以看看其他更详细的介绍。

Java 保存图片到数据库时,为啥要对图片进行base64编码

我在网上总能看到相关的代码:保存图片到数据库中时,总会对图片进行Base64编码。如:http://blog.csdn.net/hfhwfw/article/details/5544408 。我在数据库中保存图片的字段类型为 Blob,我直接保存图片相应的字节数组到 Blob即可。不明白为什么还要对图片的字节数组做 Base64编码。

首先这是一种SB做法,图片保存到数据库这个很浪费数据库资源, 通常情况下图片等文件都是用ftp服务器来存储文件的. 为什么要用base64进行编码是因为, base64会把文件这个文件转换成字符串, base64编码后得到的是一组字符串, 为什么要用blob类型, 因为这个类型可以存储4GB数据, 数据库中普通的 varchar varchar2 text等类型都有长度的限制 参考技术A 保密和字符处理追问

那怎么保存到 Blob 类型字段中?

参考技术B 因为二进制数据无法使用格式化的传输(如xml、json),而Base64提供了剔除特殊字符(如<、/)的转换,所以有时候需要传输二进制的时候就考虑进行Base64编码。
考虑一个接口可能会同时返回一个图片的数据,加上这个图片的说明,使用json返回的时候就必须要对图片信息进行Base64编码。否则,你只能返回一个url,然后让客户端再使用这个url获取图片信息。
上面只是讨论Base64的用处,至于存储在数据库是什么无所谓。本人还是倾向于原始的二进制数据,毕竟如果只有一个地方存储这些数据,那么保存原始数据能保证不会失去任何精度。

以上是关于java读取blob并用base64码进行保存的主要内容,如果未能解决你的问题,请参考以下文章

将文件 base64 保存在 blob 列中

如何将图像转换为 Base64 字符串,并转换回图像,保存到 azure blob

java base64位图片转码上传服务器,后台解码,后台保存文件路径不知道怎么写 求教(不是安卓)

如何将base64音频数据解码为wav格式

java上传不同类型图片,保存数据库(Base64位图转网络图片)

java读取照片保存到达梦数据库