База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как передать изображение в JSON через Base64 в 1С 7.7? › Ответ в теме: Как передать изображение в JSON через Base64 в 1С 7.7?
Сергей, в 1С 7.7 для передачи изображения в JSON через бинарную строку нужно выполнить следующие шаги:
1. Получить бинарные данные изображения (например, из объекта «Изображение»).
2. Преобразовать бинарные данные в строку, используя Base64 кодирование.
3. Вставить полученную Base64 строку в JSON как обычное строковое значение.
В 1С 7.7 нет встроенных функций для Base64, поэтому нужно использовать самописные процедуры или внешние библиотеки. Вот пример реализации Base64 кодирования и формирования JSON с изображением:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
// Функция кодирования бинарных данных в Base64 Функция Base64Кодировать(ДвоичныеДанные) ТаблицаКодов = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; Результат = ""; Буфер = ""; Длина = СтрДлина(ДвоичныеДанные); Индекс = 1; Пока Индекс <= Длина Цикл // Читаем по 3 байта Байты = ""; Для i = 0 По 2 Цикл Если (Индекс + i) <= Длина Тогда Байты = Байты + Сред(ДвоичныеДанные, Индекс + i, 1); Иначе Байты = Байты + Символ(0); КонецЕсли; КонецЦикла; // Преобразуем 3 байта в 4 символа Base64 Б1 = КодСимвола(Сред(Байты,1,1)); Б2 = КодСимвола(Сред(Байты,2,1)); Б3 = КодСимвола(Сред(Байты,3,1)); Инд1 = Б1 / 4; Инд2 = ((Б1 % 4) * 16) + (Б2 / 16); Инд3 = ((Б2 % 16) * 4) + (Б3 / 64); Инд4 = Б3 % 64; Результат = Результат + Сред(ТаблицаКодов, Цел(Инд1)+1, 1); Результат = Результат + Сред(ТаблицаКодов, Цел(Инд2)+1, 1); Если (Индекс + 1) > Длина Тогда Результат = Результат + "="; Иначе Результат = Результат + Сред(ТаблицаКодов, Цел(Инд3)+1, 1); КонецЕсли; Если (Индекс + 2) > Длина Тогда Результат = Результат + "="; Иначе Результат = Результат + Сред(ТаблицаКодов, Цел(Инд4)+1, 1); КонецЕсли; Индекс = Индекс + 3; КонецЦикла; Возврат Результат; КонецФункции // Пример использования Процедура ПередатьИзображениеВJSON(Изображение) // Получаем бинарные данные изображения БинарныеДанные = Изображение.ПолучитьДвоичныеДанные(); // Кодируем в Base64 СтрокаBase64 = Base64Кодировать(БинарныеДанные); // Формируем JSON вручную JSON = "{""image"":""" + СтрокаBase64 + """}"; Сообщить(JSON); КонецПроцедуры |
Объяснения:
— Метод ПолучитьДвоичныеДанные() у объекта Изображение возвращает бинарные данные.
— Функция Base64Кодировать преобразует бинарные данные в строку Base64.
— В JSON строка Base64 вставляется как обычное строковое значение.
Если у вас есть возможность использовать внешние компоненты или расширения, можно применить готовые библиотеки Base64, что упростит код.
Если нужна помощь с конкретным кодом для вашего варианта — могу помочь написать.