在 blob 列中保存文件 base64
Save file base64 in blob column
我有一个像这样的 base 64 可变字符串:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA.......
我需要将其保存在列类型的 blob 中,我需要对我认为的字符串进行解码,然后再保存到 blob 列
根据 RFC 2397,您所用的 BASE64 字符串的 URL 部分 data:image/jpeg;base64
.
假设您使用 Standard Base64 Decoder 那么您需要拆分字符串才能将其解码为图像,如下面的代码所示:
import java.io.ByteArrayInputStream;
import sun.misc.BASE64Decoder;
def sourceData = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA';
// tokenize the data
def parts = sourceData.tokenize(",");
def imageString = parts[1];
// create a buffered image
BufferedImage image = null;
byte[] imageByte;
BASE64Decoder decoder = new BASE64Decoder();
imageByte = decoder.decodeBuffer(imageString);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
image = ImageIO.read(bis);
bis.close();
// write the image to a file
File outputfile = new File("response.jpg");
ImageIO.write(image, "jpg", outputfile);
因此如果您想保存与图像文件格式相关的信息,那么在保存到数据库 Clob 列时请保留完整的 Base64 字符串,并且在读取时可以仅将数据部分(在 Base64 URL 之后)解码为实际图像,而 base64 URL 可以帮助确定图像的格式。
我有一个像这样的 base 64 可变字符串:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA.......
我需要将其保存在列类型的 blob 中,我需要对我认为的字符串进行解码,然后再保存到 blob 列
根据 RFC 2397,您所用的 BASE64 字符串的 URL 部分 data:image/jpeg;base64
.
假设您使用 Standard Base64 Decoder 那么您需要拆分字符串才能将其解码为图像,如下面的代码所示:
import java.io.ByteArrayInputStream;
import sun.misc.BASE64Decoder;
def sourceData = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA';
// tokenize the data
def parts = sourceData.tokenize(",");
def imageString = parts[1];
// create a buffered image
BufferedImage image = null;
byte[] imageByte;
BASE64Decoder decoder = new BASE64Decoder();
imageByte = decoder.decodeBuffer(imageString);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
image = ImageIO.read(bis);
bis.close();
// write the image to a file
File outputfile = new File("response.jpg");
ImageIO.write(image, "jpg", outputfile);
因此如果您想保存与图像文件格式相关的信息,那么在保存到数据库 Clob 列时请保留完整的 Base64 字符串,并且在读取时可以仅将数据部分(在 Base64 URL 之后)解码为实际图像,而 base64 URL 可以帮助确定图像的格式。