Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Примеры работы
Дальше: Добавление выбранных файлов в архив

Добавление в архив файлов по маске

Рассмотрим пример добавления в архив файлов из выбранного пользователем каталога и соответствующих маске (в данном случае – «*.jpg»). Данная задача может быть выполнена с помощью следующего программного кода (листинги 6.137, 6.138, 6.139, 6.140).

Листинг 6.137. Пример добавления файлов в ZIP-архив

&НаКлиенте

Процедура ДобавлениеФайловВАрхив(Команда)

 

ВыбратьКаталог("Выбор каталога для поиска файлов",

Новый ОписаниеОповещения("ДобавитьФайлыВАрхивЗавершение", ЭтотОбъект));

 

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

Листинг 6.138. Процедура «ВыбратьКаталог()»

&НаКлиенте

Процедура ВыбратьКаталог(ЗаголовокДиалога, Оповещение)

 

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);

Диалог.Заголовок = ЗаголовокДиалога;

Диалог.Показать(Оповещение);

 

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

Листинг 6.139. Обработчик оповещения «ДобавитьФайлыВАрхивЗавершение()»

&НаКлиенте

Процедура ДобавитьФайлыВАрхивЗавершение(ВыбранныеФайлы, Дополнительно) Экспорт

 

Если ВыбранныеФайлы = Неопределено Тогда

Возврат;

КонецЕсли;

 

МаскаПоиска = ВыбранныеФайлы[0] + "\*.jpg";

 

АдресАрхиваВХранилище = ДобавитьФайлыВАрхивНаСервере(МаскаПоиска);

 

НачатьПолучениеФайлаССервера(, АдресАрхиваВХранилище, "c:\temp\pictures.zip");

 

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

Листинг 6.140. Функция «ДобавитьФайлыВАрхивНаСервере()»

&НаСервереБезКонтекста

Функция ДобавитьФайлыВАрхивНаСервере(МаскаПоиска)

 

Архив = Новый ЗаписьZIPФайла();

 

Архив.Добавить(МаскаПоиска,

РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);

 

ДанныеАрхива = Архив.ПолучитьДвоичныеДанные("", "",

МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20);

 

Возврат ПоместитьВоВременноеХранилище(ДанныеАрхива);

 

КонецФункции

Сначала пользователю показывается диалог выбора каталога для поиска файлов, помещаемых в архив. Когда каталог выбран, на его основе формируется маска поиска и передается в функцию ДобавитьФайлыВАрхивНаСервере(), в которой новый архив создается как неинициализированный объект ЗаписьZIPФайла. Затем файлы по маске помещаются в архив и вызывается метод этого объекта ПолучитьДвоичныеДанные(), который получает ZIP-архив в виде двоичных данных и закрывает архив аналогично методу Записать(). Эти двоичные данные возвращаются на клиент в процедуру ДобавитьФайлыВАрхивЗавершение(), где файл архива получается в виде локального файла с явно заданным именем.

Назад: Примеры работы
Дальше: Добавление выбранных файлов в архив