1с как скачать файл по ссылке
Перейти к содержимому

1с как скачать файл по ссылке

  • автор:

Скачать файл с https ? Дайте пожалуйста пример.

FTPСоединение = Новый FTPСоединение("ИмяFTP", 21, "ИмяВхода", "Пароль",,Истина,30);
Исключение
УведомитьОбОшибке(ПутьКФайлуЛогов, "Ошибка в загрузке на фтп", ОписаниеОшибки());
КонецПопытки;

СписокФайлов = НайтиФайлы(КаталогОбменаА3 + "Website\OUT\", "*.zip");

Если НЕ FTPСоединение = Неопределено и СписокФайлов.Количество() > 0 Тогда
Попытка
Для Сч = 0 По СписокФайлов.Количество() — 1 Цикл
FTPСоединение.Записать(СписокФайлов[Сч].ПолноеИмя, "IN/" + СписокФайлов[Сч].Имя);
ПутьКФайлу = СписокФайлов[Сч].Путь + СписокФайлов[Сч].ИмяБезРасширения + ".zip";
ЗапуститьПриложение("cmd /c move /Y " + """" + ПутьКФайлу + """" + " " + """" + КаталогОбменаА3 + "Website\PROCESSED\OUT""");
FTPСоединение.Удалить(ПутьКФайл)
КонецЦикла;
Исключение
УведомитьОбОшибке(ПутьКФайлуЛогов, "Ошибка в загрузке на фтп", ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЕсли;

ХТТП = Новый HTTPСоединение(СерверПриемник, Порт);

Получить (Get)
Синтаксис:
Получить(<Источник>, <Имя выходного файла>, <Заголовки>)
Параметры:
<Источник> (обязательный)
Тип: Строка. Адрес ресурса на сервере.
<Имя выходного файла> (обязательный)
Тип: Строка. Имя файла, в который помещаются данные полученного ресурса.
<Заголовки> (необязательный)
Тип: Строка. Указываются заголовки, добавляемые к запросу на сервер. Текстовые пары вида <Заголовок>:<Значение>, разделяемые комбинацией ВК + ПС.
Описание:
Получает ресурс из указанного адреса.

Запрос = Новый HTTPЗапрос(АдресЗапроса);

Соединение = Новый HTTPСоединение(ИмяСервера,,Логин,Пароль. Новый ЗащищенноеСоединениеOpenSSL);
Сообщить(Соединение.ОтправитьДляОбработки(Запрос).ПолучитьТелоКакСтроку());

Как скачать файл с интернета по HTTP средствами 1с 8

Предлагаю вашему вниманию функцию, позволяющую получить файл с интернета, в том числе, на которые установлен редирект.

&НаСервере
Процедура Пример()

&НаСервереБезКонтекста
Функция ПолучитьHTTPОтвет(ПутьКФайлуНаСервере, ИмяФайла, Соединение, Заголовки, флаг = Истина)

HTTPЗапрос = Новый HTTPЗапрос(ПутьКФайлуНаСервере, Заголовки);
HTTPЗапрос.Заголовки.Вставить(«Accept-Charset», «utf-8»);
HTTPОтвет = Соединение.Получить(HTTPЗапрос, ИмяФайла);

Если HTTPОтвет.КодСостояния = 301 или HTTPОтвет.КодСостояния = 302 Тогда
ПутьКФайлуНаСервере = HTTPОтвет.Заголовки[«Location»];
URLРазделенный = РазделитьURL(ПутьКФайлуНаСервере);
ПутьКФайлуНаСервере = URLРазделенный.ПутьКФайлуНаСервере;
HTTPОтвет = ПолучитьHTTPОтвет(ПутьКФайлуНаСервере, ИмяФайла, Соединение, Заголовки, Флаг);
КонецЕсли;

файл = Новый Файл(ИмяФайла);

Если флаг и HTTPОтвет.КодСостояния >= 200 и HTTPОтвет.КодСостояния <= 299 Тогда флаг = Ложь; ИмяФайлаВр = ПутьКФайлуНаСервере; Пока Найти(ИмяФайлаВр,»/») > 0 цикл
ИмяФайлаВр = Сред(ИмяФайлаВр,Найти(ИмяФайлаВр,»/»)+1);
КонецЦикла;
Если НЕ ПустаяСтрока(ИмяФайлаВр) Тогда
ПереместитьФайл(ИмяФайла, файл.Путь + ИмяФайлаВр);
ИмяФайла = файл.Путь + ИмяФайлаВр;
КонецЕсли;
КонецЕсли;

&НаСервереБезКонтекста
Функция ПолучитьФайлССервера(ФайлНаВебСервере)

ВремКаталог = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ВремКаталог);

ПараметрыПолученияФайлов = Новый Структура;

ПараметрыПолучения = Новый Структура(«ИмяФайла»);
ПараметрыПолучения. Вставить(«ИмяФайла», ВремКаталог);

ИмяСервера = URLРазделенный.ИмяСервера;
ПутьКФайлуНаСервере = URLРазделенный.ПутьКФайлуНаСервере;
Протокол = URLРазделенный.Протокол;
Заголовки = Новый Соответствие;
СписокФайлов = новый Массив;

Соединение = Новый HTTPСоединение(ИмяСервера, , , , , , );

ИмяФайла = ВремКаталог + «\temp.htm»;

HTTPОтвет = ПолучитьHTTPОтвет(ПутьКФайлуНаСервере, ИмяФайла, Соединение, Заголовки);

Если HTTPОтвет.КодСостояния < 200 Или HTTPОтвет.КодСостояния >= 300 Тогда
ФайлОтвета = Новый ЧтениеТекста(ВремКаталог + «\temp.htm», КодировкаТекста.UTF8);
ВызватьИсключение СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(ФайлОтвета.Прочитать(5 * 1024));
КонецЕсли;

&НаСервереБезКонтекста
Функция РазделитьURL(Знач URL) Экспорт

Результат = Новый Структура;
Результат.Вставить(«Протокол», ?(ПустаяСтрока(СтруктураURL.Схема), «http», СтруктураURL.Схема));
Результат.Вставить(«ИмяСервера», СтруктураURL.ИмяСервера);
Результат.Вставить(«ПутьКФайлуНаСервере», СтруктураURL.ПутьНаСервере);

&НаСервереБезКонтекста
Функция СтруктураURI(Знач СтрокаURI) Экспорт

// схема
Схема = «»;
Позиция = Найти(СтрокаURI, «://»);
Если Позиция > 0 Тогда
Схема = НРег(Лев(СтрокаURI, Позиция — 1));
СтрокаURI = Сред(СтрокаURI, Позиция + 3);
КонецЕсли;

// Строка соединения и путь на сервере.
СтрокаСоединения = СтрокаURI;
ПутьНаСервере = «»;
Позиция = Найти(СтрокаСоединения, «/»);
Если Позиция > 0 Тогда
ПутьНаСервере = Сред(СтрокаСоединения, Позиция + 1);
СтрокаСоединения = Лев(СтрокаСоединения, Позиция — 1);
КонецЕсли;

// Информация пользователя и имя сервера.
СтрокаАвторизации = «»;
ИмяСервера = СтрокаСоединения;
Позиция = Найти(СтрокаСоединения, «@»);
Если Позиция > 0 Тогда
СтрокаАвторизации = Лев(СтрокаСоединения, Позиция — 1);
ИмяСервера = Сред(СтрокаСоединения, Позиция + 1);
КонецЕсли;

// логин и пароль
Логин = СтрокаАвторизации;
Пароль = «»;
Позиция = Найти(СтрокаАвторизации, «:»);
Если Позиция > 0 Тогда
Логин = Лев(СтрокаАвторизации, Позиция — 1);
Пароль = Сред(СтрокаАвторизации, Позиция + 1);
КонецЕсли;

// хост и порт
Хост = ИмяСервера;
Порт = «»;
Позиция = Найти(ИмяСервера, «:»);
Если Позиция > 0 Тогда
Хост = Лев(ИмяСервера, Позиция — 1);
Порт = Сред(ИмяСервера, Позиция + 1);
КонецЕсли;

Результат = Новый Структура;
Результат.Вставить(«Схема», Схема);
Результат.Вставить(«Логин», Логин);
Результат.Вставить(«Пароль», Пароль);
Результат.Вставить(«ИмяСервера», ИмяСервера);
Результат.Вставить(«Хост», Хост);
Результат.Вставить(«Порт», ?(ПустаяСтрока(Порт), Неопределено, Число(Порт)));
Результат.Вставить(«ПутьНаСервере», ПутьНаСервере);

Работа с HTTP в 1С 8.2 и 8.3

В этой статье я попробую рассказать о том, какими средствами располагает технологическая платформа для работы с протоколом HTTP. В начале будет немного общей информации, а затем конкретные примеры. Отмечу, что в статье используется технологическая платформа версии 8.3.12.1595.

Общая информация

Для работы с протоколом HTTP в 1С существуют три основных объекта — HTTPСоединение, HTTPЗапрос и HTTPОтвет, кроме этого для создания HTTPS-соединения используется объект ЗащищенноеСоединениеOpenSSL, а для соединения через прокси-сервер объект ИнтернетПрокси. Существует еще несколько объектов, которые могут использоваться при работе с протоколом HTTP, но используются они достаточно редко и не так важны.

Назначение основных объектов следует из названия.

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

HTTPЗапрос позволяет описать что именно мы хотим от сервера — в свойствах нужно обязательно указать адрес ресурса к которому мы обращаемся, кроме этого имеется возможность указать какие-либо заголовки, методы же, в свою очередь, позволяют различными способами установить и получить тело запроса.

HTTPОтвет является результатом выполнения запроса к серверу — из свойств мы можем узнать ответные заголовки и код состояния, а методы позволяют получить тело ответа различными способами.

ИнтернетПрокси позволяет указать настройки прокси-сервера — с помощью метода Установить() можно указать параметры для подключения к прокси-серверу, отмечу, что свойства «Пароль» и «Пользователь» являются устаревшими, использовать их не рекомендуется.

ЗащищенноеСоединениеOpenSSL создает защищенное соединение OpenSSL — имеется возможность указать сертификат клиента и/или сертификат удостоверяющего центра, в большинстве случаев (для доступа к обычным сайтам по протоколу HTTPS) указывать какие либо сертификаты не требуется.

Заканчиваем с теорией и переходим к практике.

Практические задачи при работе с HTTP

В качестве практической части рассмотрим задачи, которые чаще всего встречаются при работе с протоколом HTTP в 1С

1С. Как скачать файл из интернета?

Обратите внимание:
Файл-приемник при создании будет иметь права доступа, аналогичные назначаемым при создании новых файлов (т.е. права доступа к файлу-источнику не копируются).

Допускается использование схем http, https и ftp для адресации файлов.
При использовании этих схем в адресах необходимо указывать прямые слеши ‘/’, а не обратные ‘\’.

Для работы метода на веб-клиенте необходимо предварительно подключить расширение работы с файлами.

На веб-клиенте, метод работает только с локальными файлами.

Добавить комментарий

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