Цель
Возьмите данные в mssql, изображение, конвертируйте в base64 и вставьте в электронное письмо.
Детс
У меня есть изображение, хранящееся в столбце varbinary
в базе данных mssql.
0xFFD8FFE00....
С другой стороны, я запрашиваю его в древней среде Jython, потому что это все, к чему у меня есть доступ.
Когда я запрашиваю и печатаю, я получаю подписанный массив байтов или char (может быть?).
>>> 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.
Я что-то упускаю, я не работаю с этим достаточно часто, чтобы понять это. Я знаю о подписанном/неподписанном порядке следования байтов на высоком уровне, но я не могу расколоть этот орех.
SELECT CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("YourBinaryColumn")))', 'VARCHAR(MAX)') Base64EncodingData FROM dbo.YourTable;
- person Dan Guzman   schedule 09.05.2019