【发布时间】:2019-05-09 14:17:01
【问题描述】:
目标
在 mssql 中获取数据,一个图像,转换为 base64 并嵌入到电子邮件中。
迪茨
我有一张图片,存储在 mssql 数据库的 varbinary 列中。
0xFFD8FFE00....
另一方面,我将其查询到一个古老的 Jython 环境中,因为这是我可以访问的全部内容。
当我查询和打印时,我似乎得到了一个带符号的字节数组或一个字符(也许?)。
>>> array('b', [-1, -40, -1, -32, 0, 16,...
另一个线程建议将其转储到 b64 编码器中
import base64
encoded = base64.b64encode(queryResult)
这给了我一个错误TypeError: b2a_base64(): 1st arg can't be coerced to String
该线程还提到将其转换为 json,但由于我在 Python 2.4 领域,我无法访问 import json 或 import simplejson。在这里使用 json 解释器对我来说似乎是一个主要的问题。
我还尝试在 SQL 端使用decompress 转换它并转换为xml,这些都不起作用。这些图像在作为电子邮件附件传递时工作正常,因此据我所知它们没有损坏。要将它们嵌入到 html 模板中,我需要取出那个 Base64 字符串。
我错过了一些东西,我不经常使用这些东西来解决它。我知道高级别的有符号/无符号字节序,但我不能完全破解这个坚果。
【问题讨论】:
-
对于 T-SQL,请参阅 stackoverflow.com/questions/45664937/…。
-
@Dan Guzman 我在那里尝试了很多方法,但还没有运气。仍在研究一些示例。提到的 TechNet 文章是一个易于理解的示例的热门垃圾。
-
这个简单的例子对我有用:
SELECT CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("YourBinaryColumn")))', 'VARCHAR(MAX)') Base64EncodingData FROM dbo.YourTable;
标签: python sql-server encoding jython-2.5