Записать двоичные данные из массива JSON

1. UPKA 29.06.22 20:13 Сейчас в теме
Здравствуйте .Пытаюсь с телеграмм загрузить аватарку пользователя.


{
"ok": true,
"result": {
"total_count": 14,
"photos": [[{
"file_id": "AgADAgAD6qcxGwyaYxMulue7xCVvITMmrQ4ABKwFQfa_ML0d0qQBAAEC",
"file_size": 4367,
"width": 160,
"height": 160
},
{
"file_id": "AgADAgAD6qcxGwyaYxMulue7xCVvITMmrQ4ABBYsR-VFYPb806QBAAEC",
"file_size": 14094,
"width": 320,
"height": 320
},
{
"file_id": "AgADAgAD6qcxGwyaYxMulue7xCVvITMmrQ4ABOlO5fHuDpog1KQBAAEC",
"file_size": 47984,
"width": 640,
"height": 640
}]]
}
}

После чтения JSON получаю следующее:

	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
	СтруктураДанных = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();

П = СтруктураДанных.result.photos.Получить(0).Получить(0).file_id;

(AgADAgAD6qcxGwyaYxMulue7xCVvITMmrQ4ABKwFQfa_ML0d0qQBAAEC)

Далее, пытаюсь загрузить в реквизит

Док = Документы.ПользователиТелеграмм.СоздатьДокумент();

МояКартинка = Новый ДвоичныеДанные(П);

ХранилищеКартинки = Новый ХранилищеЗначения(МояКартинка);



Док.Картинка = ХранилищеКартинки;	

Док.Записать(РежимЗаписиДокумента.Проведение);
Показать


Но на выходе получаю ошибку: Ошибка при вызове конструктора (ДвоичныеДанные): Фаил не обнаружен: 'AgADAgAD6qcxGwyaYxMulue7xCVvITMmrQ4ABKwFQfa_ML0d0qQBAAEC'

Подскажите, как правильно записать данные?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 29.06.22 20:29 Сейчас в теме
(1)
МояКартинка = Новый ДвоичныеДанные(П);

Так получают двоичные данные из файла.
Тут нужно использовать ПолучитьДвоичныеДанныеИзСтроки
МояКартинка = ПолучитьДвоичныеДанныеИзСтроки(П);


PS. хотя я не уверен, что это двоичные данные картинки. Судя по названию параметра, это уникальный идентификатор файла, по которому нужно отдельно получать содержимое этого файла (двоичные данные картинки).
3. UPKA 29.06.22 21:38 Сейчас в теме
(2) да, я уже прочитал, что это идентификатор файла. С помощью него нужно дальше узнать адрес фото и потом уже загрузить данные. Может, если кто то уже загружал по id фотографии, подскажет.
7. UPKA 30.06.22 10:47 Сейчас в теме
(2)
ПолучитьДвоичныеДанныеИзСтроки



Дошел я все таки до получения картинки.

Таким образом я могу записать картинку:

ДвоичныеДанные = ОтветHTTP.ПолучитьТелоКакДвоичныеДанные();

ДвоичныеДанные.Записать("D:\1\1.jpg");

Подскажите, а как записать в хранилище значений?

Пробую вот так:

ВладелецФайла = Документы.Пользователи.НайтиПоНомеру("000000001");

Аватар = ВладелецФайла.ПолучитьОбъект();


МояКартинка = Новый ДвоичныеДанные(ДвоичныеДанные);


Аватар.Картинка = Новый ХранилищеЗначения(МояКартинка);

Аватар.Записать();

Не работает. Ошибка фаил не найден и выдает значения бинарного файла.
4. lostcay 5 30.06.22 00:26 Сейчас в теме
Посмотрите в документации API самого телеграмма, возможно там есть метод солучения картинки через УИД. Почти уверен, что есть, иначе зачем им пихать его в реквест?
5. lostcay 5 30.06.22 00:40 Сейчас в теме
Нашел хорошую статью на инфостарте: https://infostart.ru/1c/articles/1217332/
Раздел: Загрузка полученных файлов
6. UPKA 30.06.22 08:02 Сейчас в теме
(5) Спасибо. Тоже наткнулся вчера на эту статью.
8. UPKA 30.06.22 11:31 Сейчас в теме
Нашел выход)

ДД = ОтветHTTP.ПолучитьТелоКакДвоичныеДанные();;


МояКартинка = ПоместитьВоВременноеХранилище(ДД, УникальныйИдентификатор);

ВладелецФайла = Документы.Пользователи.НайтиПоНомеру("000000001");


Аватар = ВладелецФайла.ПолучитьОбъект();

Аватар.Картинка = Новый ХранилищеЗначения (МояКартинка);


//Аватар.Картинка = Новый ХранилищеЗначения(МояКартинка);
//Аватар.Картинка = ПоместитьВоВременноеХранилище(МояКартинка);

Аватар.Записать();


Данные записались, но при открытии документа в поле картинки отображается крестик и если попытаться открыть, то пишет, что неизвестный формат.
9. spacecraft 30.06.22 13:37 Сейчас в теме
(8) для начала сохранить в файл и попробовать открыть файл средствами операционной системы.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот