2012-03-05 75 views
0

我试图将从HTML5画布制作的dataURL保存到我的mysql数据库。通过AJAX传递dataURL

我有阿贾克斯的设置来拉我做了所谓的“dataURL”,我使用此代码设置dataURL到画布的IMG了var:

dataURL = oCanvas.toDataURL(); 

我的问题是画布的dataURL有很多的字符在拉动ajax方面效果不好,所以我需要一种编码方式或以不同的方式操作,因此我的最终结果可以保存到mysql数据库中,然后再“解码”以再次显示。

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

任何帮助将不胜感激!

回答

0

其实我结束了设置的事件,因此当图像完成绘制时,会将dataURL设置为隐藏的表单元素。不再需要通过ajax传递它:)。 (还是)感谢你的建议。

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[] 

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

0

Base64编码需要几乎4倍的字节来编码图像。建议在传输之前使用window.atob来解码base64,无论您是使用ajax还是常规形式。当然IE不支持它,但是this looks like a shim