HelpF.pro

Функция получение файла с сервера

Код 1C v 8.х
  // Параметры:
// Адрес - адрес файла на сервере
// ЛокальныйПуть - путь для сохранения файла на локальном компьютере
// ВыдаватьСообщения - признак необходимости выдачи сообщений в случае ошибки
// (необязательный, по умолчаню равен Истина)
//
// Возвращаемое значение:
// Число - результат получения файла с сервера
// 0 - успешно;
// 1 - неправильный параметр
// 2 - неправильные код пользователя или пароль для доступа к "закрытой" части сайта
// 3 - ошибка подключения к веб-сайту.
//
Функция ПолучитьФайлССервера(Знач Адрес, Знач ЛокальныйПуть, Знач ВыдаватьСообщения = Истина,
Знач Соединение = Неопределено) Экспорт

Если НЕ ЗначениеЗаполнено(Адрес) ИЛИ НЕ ЗначениеЗаполнено(ЛокальныйПуть) Тогда
ЗаписатьОшибку("Невозможно подключиться к сети Интернет: не инициализированы внутренние переменные.");
Возврат 1;
КонецЕсли;

Если Соединение = Неопределено Тогда
// Установка параметров прокси-сервера
Если ПроксиСерверТребуетАутентификации Тогда
ПроксиСервер = Новый ИнтернетПрокси();
ПроксиСервер.Пользователь = ПользовательПроксиСервера;
ПроксиСервер.Пароль = ПарольПроксиСервера;
КонецЕсли;

// Создание HTTP-соединения с сервером обновлений
Соединение = Новый HTTPСоединение(СерверОбновлений,
,
КодПользователяСервераОбновлений,
ПарольСервераОбновлений,
?(ПроксиСерверТребуетАутентификации, ПроксиСервер, Неопределено));

КонецЕсли;

Попытка
СоздатьКаталог(ПолучитьКаталогФайла(ЛокальныйПуть));
Соединение.Получить(Адрес, ЛокальныйПуть);
Исключение

// "Ошибка аутентификации при доступе Адресу"
ОписаниеОшибки = ОписаниеОшибки();
Если Найти(ОписаниеОшибки, Адрес) > 0 И НЕ Найти(ОписаниеОшибки, "не обнаружен") Тогда

ЗаписатьПредупреждение("Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + "
|" + ОписаниеОшибки);
Если ВыдаватьСообщения Тогда
ОбщегоНазначения.ПредупреждениеОбОшибке("Неправильно указан код пользователя или пароль.");
КонецЕсли;
Возврат 2;
КонецЕсли;

// Файл не обнаружен
Если Найти(ОписаниеОшибки, "не обнаружен") Тогда
Сообщение = "Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + "
|" + ОписаниеОшибки;
ЗаписатьПредупреждение("Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + "
|" + ОписаниеОшибки);
Если ВыдаватьСообщения Тогда
ОбщегоНазначения.СообщитьОбОшибке(Сообщение);
КонецЕсли;
Возврат 3;
КонецЕсли;

// Ошибка работы с Интернет: a timeout was reached
Сообщение = "Ошибка при обращении к http://" + Соединение.Сервер + "/" + Адрес + "
|" + ОписаниеОшибки;
ЗаписатьПредупреждение(Сообщение);
Если ВыдаватьСообщения Тогда
ОбщегоНазначения.СообщитьОбОшибке(Сообщение);
КонецЕсли;
Возврат 3;

КонецПопытки;

ЗаписатьИнформацию("Файл успешно получен (адрес: http://" + Соединение.Сервер + "/" + Адрес +
"; локальный файл: " + ЛокальныйПуть + ").");
Возврат 0;
КонецФункции

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/270.html