使用JavaScript显示从MySQL数据库检索的Blob数据

时间:2011-12-19 19:35:43

标签: javascript image blob

使用Web服务,我能够从MySQL数据库中检索一些数据。数据库中保存有图像,文件类型为BLOB。这是我的Web服务在图像时返回的内容:

<image>
/9j/4AAQSkZJRgABAQEAYABgAAD/7TaeUGhvd.....RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//Z
</image>

现在我无法使我的JavaScript应用程序转换此数据,然后将其显示为图像。我研究了一下,发现了一些在线教程,但不知怎的,他们没有为我工作....有谁可以帮我解决这个问题?我可以将BLOB数据转换为图像的最简单方法是什么?提前谢谢!

1 个答案:

答案 0 :(得分:1)

假设blob具有base64编码的PNG数据,您可以使用data-uri将数据直接设置为图像,例如。

var imgdata = "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="

$('#myimg').attr('src', "data:image/png;base64,"+imgdata)

这里的假设是从服务器返回的数据是base64编码的,但如果不是这种情况你可以看到各种选项,但最终你可能必须在服务器端进行适当的转换,在这种情况下为什么不只是将url返回到在服务器端创建一个API并从blob返回图像

这是一个jsfiddle in action http://jsfiddle.net/anuraguniyal/4DEtH/5/

编辑: 我不确定您使用服务器端的语言,但每种语言的处理方式都相同,例如

>>> s='\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x05\x00\x00\x00\x05\x08\x06\x00\x00\x00\x8do&\xe5\x00\x00\x00\x1cIDAT\x08\xd7c\xf8\xff\xff?\xc3\x7f\x06 \x05\xc3 \x12\x84\xd01\xf1\x82X\xcd\x04\x00\x0e\xf55\xcb\xd1\x8e\x0e\x1f\x00\x00\x00\x00IEND\xaeB`\x82'
>>> import base64
>>> base64.b64encode(s)
'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='

即。获取所有数据,将存储在文件中(不是png标记),而不仅仅是原始图像数据并对其进行编码