Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Игорь_UUS Member Откуда: г. Екатеринбург Сообщений: 680 |
Добрый день. Использую MSSQL 2016 Почитав документацию работы с json написано "Строка в кодировке Base64". Из программы мне необходимо сохранить файл jpeg в базе данных, передав его в "теле" json на сторону mssql Вот код написанный на Delphi: function TSchedulerFrm.GetResourcesJSONArr: string; var JSONArr : TJSONArray; JSONObj : TJSONObject; begin JSONArr := TJSONArray.Create; try FResourceCacheEdit.First; while not FResourceCacheEdit.Eof do begin if FResourceCacheEdit.Edited = True then begin JSONObj := TJSONObject.Create; .. .. if not FResourceCacheEdit.MSEV1Miniature.isNULL then JSONObj.AddPair(TJSONPair.Create(fnSCH_MSEV1Miniature, TNetEncoding.Base64.EncodeBytesToString(FResourceCacheEdit.MSEV1Miniature.AsBytes))); // Сохраняем объект в массив. JSONArr.AddElement(JSONObj); end; FResourceCacheEdit.Next; end; Result := JSONArr.ToString; finally JSONArr.Free; end; end; на уровне mssql данные пытаюсь читать след. образом: SELECT [MSEV1Miniature] FROM OPENJSON(@ResourcesJSONArr) WITH ( [MSEV1Miniature] VARBINARY(MAX) '$.MSEV1Miniature' ) Исходный файл имеет размер 11556, то что сохраняется в БД имеет больший размер 11859. При этом если посмотреть "поток" данных, то в самом начале он идентичен, к середине потока появляется "какой-то мусор"... но самое интересное файл заканчивается тем же потоком что и исходный. Я правильно понимаю, что полученный поток данных в виде текста в mssq я должен перекодировать из Base64 и только потом сохранить в БД? |
17 июл 19, 09:05 [21928237] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1291 |
Осподе, милосердный! Какой бред. 1. JSON = обычная символьная строка. 2. Передача бинарных данных в строке JSON элементарна. Даже документацию можно не читать. Я к тому, что конструкторы JSON сами сообразят в что конвертить бинари. 3. @ResourcesJSONArr глазками то осмотреть и миру показать не судьба? ЗЫ. Для пробы можно передавать 10-15 байт. Если опыта с MS SQL поболе - можно собрать JSON на стороне сервера и посмотреть как оно должно выглядеть. Сравнить с тем, что прилетает из вашей проги. |
17 июл 19, 09:24 [21928253] Ответить | Цитировать Сообщить модератору |
Игорь_UUS Member Откуда: г. Екатеринбург Сообщений: 680 |
1. Вы прям мир открыли. 2. Приведите пример... в дельфях без перекодировки в base64 или в hex у меня что-то не получается отправить в теле json 3. Зачем лишний мусор.. речь идёт о передачи именно бинарных данных. |
||
17 июл 19, 09:47 [21928275] Ответить | Цитировать Сообщить модератору |
Игорь_UUS Member Откуда: г. Екатеринбург Сообщений: 680 |
разобрался, вопрос закрыт |
17 июл 19, 12:22 [21928459] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37198 |
|
|
17 июл 19, 12:45 [21928473] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |