Blob ebillimg = (Blob) map.get("ebillimg")
//重点在于两次转换,先将blob转字节数组
String pdfToImgString = new String(blobToByte(ebillimg));
//然后再把16进制转成二进制数组
byte[] bytes = hexStringToByte(pdfToImgString);
//转base64
pdfToImgInfo = new BASE64Encoder().encode(bytes);
//Blob 转byte[]
public byte[] blobToByte(Blob blob) throws Exception {
byte[] bytes = null;
try {
InputStream in=blob.getBinaryStream();
BufferedInputStream inBuffered = new BufferedInputStream(in);
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
byte[] temp = new byte[1024];
int size = 0;
while ((size = inBuffered.read(temp)) != -1) {
out.write(temp, 0, size);
}
inBuffered.close();
in.close();
bytes = out.toByteArray();
} catch(Exception ex){
ex.printStackTrace();
}
return bytes;
}
/**
* 16进制字符串转化为二进制数据
*
* @param hex
* @return
*/
public byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}
private byte toByte(char c) {
return (byte) "0123456789abcdef".indexOf(c);
}
Blob转base64示例代码
最新推荐文章于 2024-02-19 10:41:39 发布