目标
从 MSSQL 数据库中获取数据和图片,将其转换为 Base64 编码并嵌入到邮件中。
细节
我有一张图片,存储在 MSSQL 数据库的 varbinary
列中。
0xFFD8FFE00....
另一方面,我正在将其查询到一个古老的Jython环境中,因为那是我能访问的唯一选择。
当我查询并打印时,似乎会得到一个有符号字节或字符数组(也许?)。
>>> array('b', [-1, -40, -1, -32, 0, 16,...
另一个线程建议将其转换为b64编码器
import base64
encoded = base64.b64encode(queryResult)
这给了我一个错误:TypeError:b2a_base64():第一个参数不能强制转换为字符串
该线程还提到将其转换为json,但由于我处于Python 2.4领域,因此我没有访问import json
或import simplejson
。在这里使用json解释器似乎对我来说是主要的hack。
我还尝试使用decompress
和转换为xml
在SQL端进行转换,但两者都根本无法工作。通过电子邮件附件传递时,图像可以正常工作,因此据我所知,它们并未损坏。要将它们嵌入html模板中,我需要取出那个Base64字符串。
我错过了什么,我不经常使用这些东西无法找出解决方法。我了解高级别的有符号/无符号,字节序等,但我无法完全解决这个难题。
SELECT CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("YourBinaryColumn")))', 'VARCHAR(MAX)') Base64EncodingData FROM dbo.YourTable;
- Dan Guzman