我的xhtml中有一个canvas元素。我通过String
调用将其转换为base64编码的toDataUrl()
称为dataUrl。这将产生以下输出,为清楚起见将其截断:
我想将此图像发送到我的MySQL数据库。我的实体中有一个Blob(@Lob)字段,为了将该字符串转换为字节数组,请使用
dataUrl.getData()
并使用此字节数组更新我的实体。在我的MySQL数据库中,成功创建了BLOB。但是,当我右键单击它,然后单击“在编辑器中打开文件”时,我看到“字节”选项卡很好,但是当我单击“图像”选项卡时收到一般错误,表明字节以某种方式损坏了。
这意味着当我要使用
BufferedImage imag = ImageIO.read(is);
读取此文件时,其中is
是ByteArrayInputStream
(以bytes数组作为参数),imag
返回null,更具体地说是read
中的BufferedImage
方法类。编辑:查看屏幕截图,第一个是
dataUrl.getBytes()
调用,第二个是MySQL输出。 最佳答案
我使用String.getBytes()
代替:
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = decoder.decodeBuffer(dataURL.split("^data:image/(png|jpg);base64,")[1]);
而且效果很好。
关于java - 将转换后的Canvas DataURL字节保存到数据库时,Blob损坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18421376/