Универсальная процедура по загрузке файла из интернета

Передаем в процедуру всего два параметра: откуда взять и куда положить. Остальное она сделает сама

Данная процедура сама разберет адрес скачиваемого файла на составные части, подставит их в объект HTTPСоединение и загрузит файл.
Умеет скачивать по незащищенному и защищенному протоколам (без авторизации). Для остальных случаев можно использовать ее в качестве шаблона.
  

Процедура ЗагрузитьФайлИзИнтернета(АдресФайлаВИнтернете, АдресФайлаНаКлиенте)

Если Найти(НРег(АдресФайлаВИнтернете),"https://") = 1 Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
Иначе
ЗащищенноеСоединение = Неопределено;
КонецЕсли;

// "http://static.1c.ru/images/logo.png" -> "static.1c.ru/images/logo.png"
АдресБезHTTP = СтрЗаменить(АдресФайлаВИнтернете, "//", Символы.ПС);
АдресБезHTTP = СтрПолучитьСтроку(АдресБезHTTP, СтрЧислоСтрок(АдресБезHTTP));

// "static.1c.ru/images/logo.png" -> "static.1c.ru"
АдресСервера = СтрПолучитьСтроку(СтрЗаменить(АдресБезHTTP, "/", Символы.ПС), 1);

// "static.1c.ru/images/logo.png" -> "/images/logo.png"
ПутьКФайлуВнутриДомена = Сред(АдресБезHTTP, Найти(АдресБезHTTP, "/"));

// скачиваем на диск
Соединение = Новый HTTPСоединение(АдресСервера, ,,,, 3, ЗащищенноеСоединение);
Соединение.Получить(ПутьКФайлуВнутриДомена, АдресФайлаНаКлиенте);

КонецПроцедуры

Тестировалась на платформе 8.3.8 в режиме совместимости 8.2.13, а также с отключенным режимом совместимости.
Прикладываю обработку, которая в качестве примера загружает картинки по защищенному и незащищенному протоколам. Обработка для примера написана на управляемых формах, но процедура работает также и на обычных формах.

2 Comments

  1. Diversus
    Reply
  2. json

    (1) спасибо. Сохранил себе в копилку очереную процедуру от Поручика

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *