Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 04:32

Загрузка изображения по ссылке

Автор alexandr_ll, 06 июн 2024, 07:07

0 Пользователей и 1 гость просматривают эту тему.

alexandr_ll

Возникла необходимость загрузки в конфигурацию Управление торговлей 11 изображений товара из файла Excel.
Картинки в файлах представлены в виде ссылок следующего вида:
https://tmbriz.com/pics/Arno/Stand1_002_0001_Post.jpg
https://disk.yandex.ru/d/_PbvHwN3mblVGQ
https://api.iberis-pro.ru/iberis-gp/hs/common/GetPict?id=3f45b4c94acd11eda98d0022196cc747&name=LEAF-VDIM3_SCHEME.jpg..jpg

Никак не могу описать загрузку. У кого-нибудь есть такой опыт?

Максим75

alexandr_ll, так в типовых посмотрите, как реализована хранение картинок в номенклатуре.
используется такой объект как хранилище значений.

alexandr_ll

Максим75, Ну так как по ссылке поместить файл в хранилище? Как я понимаю, нужно файл по ссылке сохранить в какую-нибудь папку на диске, потом прочитать двоичные данные и их поместить в хранилище. Интерактивно я могу это сделать, а как сделать программно?

Максим75

alexandr_ll, а вот тут хз.
может через HTTP запрос можно вытащить картинку с ресурса, сохранить на компе и уже потом подкинуть в хранилище.

alexandr_ll

Максим75, Пробую так:


Функция РазобратьАдресСайта(Знач АдресСайта) Экспорт

АдресСайта = СокрЛП(АдресСайта);

HTTPСервер = "";
HTTPПорт = 0;
HTTPАдресСкрипта = "";
HTTPЗащищенноеСоединение = Ложь;

Если ЗначениеЗаполнено(АдресСайта) Тогда

АдресСайта = СтрЗаменить(АдресСайта, "\", "/");
АдресСайта = СтрЗаменить(АдресСайта, " ", "");

Если ВРег(Лев(АдресСайта, 7)) = "HTTP://" Тогда
АдресСайта = Сред(АдресСайта, 8);
ИначеЕсли ВРег(Лев(АдресСайта, 8)) = "HTTPS://" Тогда
АдресСайта = Сред(АдресСайта, 9);
HTTPЗащищенноеСоединение = Истина;
КонецЕсли;

ПозицияСлэша = Найти(АдресСайта, "/");

Если ПозицияСлэша > 0 Тогда
HTTPСервер = Лев(АдресСайта, ПозицияСлэша - 1);
HTTPАдресСкрипта = Прав(АдресСайта, СтрДлина(АдресСайта) - ПозицияСлэша);
Иначе
HTTPСервер = АдресСайта;
HTTPАдресСкрипта = "";
КонецЕсли;
ПозицияДвоеточия = Найти(HTTPСервер, ":");
Если ПозицияДвоеточия > 0 Тогда
HTTPСерверСПортом = HTTPСервер;
HTTPСервер   = Лев(HTTPСерверСПортом, ПозицияДвоеточия - 1);
HTTPПортСтрока   = Прав(HTTPСерверСПортом, СтрДлина(HTTPСерверСПортом) - ПозицияДвоеточия);
Иначе
HTTPПортСтрока = "0";
КонецЕсли;

HTTPПорт = Розничныепродажиклиентсервер.ПривестиСтрокуКЧислу(HTTPПортСтрока);

КонецЕсли;

СтруктураРезультата = Новый Структура;
СтруктураРезультата.Вставить("HTTPСервер"   , HTTPСервер);
СтруктураРезультата.Вставить("HTTPПорт"     , HTTPПорт);
СтруктураРезультата.Вставить("HTTPАдресСкрипта" , HTTPАдресСкрипта);
СтруктураРезультата.Вставить("HTTPЗащищенноеСоединение" , HTTPЗащищенноеСоединение);
Сообщить("HTTPСервер "+HTTPСервер);
Сообщить("HTTPПорт "+HTTPПорт);
Сообщить("HTTPАдресСкрипта "+HTTPАдресСкрипта);
Сообщить("HTTPЗащищенноеСоединение "+HTTPЗащищенноеСоединение);
Возврат СтруктураРезультата;

КонецФункции
Функция ПолучитьДвоичныеДанныеКартинки(Путь)
СтруктураАдреса = РазобратьАдресСайта(Путь);
Соединение = Новый HTTPСоединение(СтруктураАдреса.HTTPСервер);
Запрос = Новый HTTPЗапрос(СтруктураАдреса.HTTPАдресСкрипта);
Ответ = Соединение.Получить(Запрос);
Возврат Ответ.ПолучитьТелоКакДвоичныеДанные();
КонецФункции
Но вот получение структур не выходит

Максим75

alexandr_ll, структура пустая или что?

Похожие темы (5)

Рейтинг@Mail.ru

Поиск