base64到二进制输出到浏览器

时间:2016-02-23 14:27:38

标签: asp-classic

我在数据库中有一个图像作为dataurl:

data:image/png;base64,iVBORw0KGgoAA...

我想将图像作为文件输出到浏览器

r=split(rs("image"),";")
s=split(r(1),",")
imgdata=base64decode(s(1))
Response.Contenttype="image/png"
response.binarywrite(imgdata)

生成的文件大小是len(imgdata)的两倍;我首先想到它只填充了8位到16位,就像这个转储显示的那样。

0000000 2030 0050 004e 0047 000d 000a 001a 000a
0000010 0000 0000 0000 000d 0049 0048 0044 0052
0000020 0000 0000 0001 0063 0000 0000 0001 00fe
0000030 0008 0006 0000 0000 0000 0049 003a 006f
0000040 007c 0000 0000 0020 0000 0049 0044 0041

但是在结果文件中的另一个地方:

0000210 2014 004b 2022 00eb 203a 007e 0178 00ee
0000220 00da 00dd 00a5 007b 0178 00af 017e 00a3
0000230 003a 0066 00f6 00bd 007a 00e5 0053 00cf

有高位字节集的单词。

这是代码页问题吗?

如果我从磁盘读取文件并对其进行二进制编码,那么图像就可以了。

1 个答案:

答案 0 :(得分:1)

我用这个替换了base64decode:

Set objXML = Server.CreateObject("MSXml2.DOMDocument")
Set objDocElem = objXML.createElement("Base64Data")
objDocElem.DataType = "bin.base64"
objDocElem.text = s(1) 'the base64-encoded string
imgdata=objDocElem.NodeTypedValue

现在生成的图像正确,解码速度提高了100倍(它的效果)