0

我正在尝试将由 HTML5 画布制作的 dataURL 保存到我的 mysql 数据库中。

我有 ajax 设置来提取我制作的名为“dataURL”的变量,并且我正在使用以下代码将 dataURL 设置为画布的 img:

dataURL = oCanvas.toDataURL();

我的问题是画布的 dataURL 有很多字符在拉取 ajax 时效果不佳,所以我需要一种对其进行编码或以不同方式操作它的方法,以便我的最终结果可以保存到 mysql 数据库,然后再“解码”到再次显示。

我知道我的 AJAX 可以工作,因为如果我将 var dataURL 设置为“奶酪”之类的东西,它将作为奶酪保存在数据库中。

任何帮助将非常感激!

4

3 回答 3

2

您从 toDataUrl 收到的数据将采用如下格式:

 data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD.... (very long string)

首先将接收到的数据过滤到之后的部分data:image/png;base64,

然后使用您的语言提供的任何 Base64 库将其解码为字节数组(或 blob)。如果您使用的是 Java:Apache Commons Codec

这是 groovy 中的一个示例:

def bytes = new Base64().decode(filteredData) as byte[]

您可以将解码结果保存到数据库中(稍后检索)

于 2012-03-05T15:38:44.943 回答
0

我实际上最终设置了一个事件,所以当图像完成绘制时,它会将 dataURL 设置为隐藏的表单元素。不再需要通过 ajax 传递它:)。(还是)感谢你的建议。

于 2012-03-13T00:14:49.787 回答
0

Base64 编码需要将近 4 倍的字节数来编码图像。无论您使用的是ajax 还是正则格式,建议在传输前使用window.atob对base64 进行解码。当然 IE 不支持它,但这看起来像一个 shim

于 2012-03-25T20:40:05.480 回答