<< Click to Display Table of Contents >> Объектная модель > Основные механизмы Zip – zip-архив |
В веб-клиенте Directum RX есть возможность выгрузить сразу несколько документов с помощью действия Экспортировать. Для одного документа оно возвращает содержимое документа (body), для нескольких – архив с документами.
Примечание. Поддержка выгрузки документов архивами реализована только в веб-клиенте. Экспорт не предназначен для скачивания большого объема документов, поэтому ограничен объемом в 500 МБ или 10 000 файлов.
Для программной работы с zip-архивом предназначен класс Sungero.Core.Zip. Доступен только в серверном коде. Прикладному разработчику доступна возможность сделать выгрузку архива с документами, а также подписями и отчетами.
Методы
IZip – Zip-архив
Методы
Имя |
Описание |
---|---|
Add() +4 перегрузки |
Добавить в zip-архив бинарные данные, массив байтов, подпись или отчет |
Сохранить zip-архив в хранилище |
|
Экспортировать zip-архив. Метод доступен только в клиентском коде |
Пример. Создание zip-архива
Необходимо добавить серверную функцию, в которой с помощью методов:
•Create() – сформировать архив;
•Add() – добавить необходимый контент: содержимое документов, подписи, отчеты;
•Save() – передать информацию на сервис хранилищ;
•Export() – передать структуру архива на клиент.
[Remote]
public virtual IZip CreateZipFromZipModel(List<Structures.Module.ZipModel> zipModels, List<Structures.Module.ExportedDocument> objs, string fileName)
{
// Создать zip-архив.
var zip = Sungero.Core.Zip.Create();
foreach (var zipModel in zipModels)
{
var document = Docflow.OfficialDocuments.Get(zipModel.DocumentId);
var version = document.Versions.Where(x => x.Id == zipModel.VersionId).FirstOrDefault();
if (zipModel.SignatureId != null)
{
// Добавить в zip-архив подписи.
var signature = Signatures.Get(version).Where(x => x.Id == zipModel.SignatureId).SingleOrDefault();
zip.Add(signature, zipModel.FileName, zipModel.FolderRelativePath.ToArray());
continue;
}
// Добавить в zip-архив содержимое документов.
var body = zipModel.IsPublicBody ? version.PublicBody : version.Body;
zip.Add(body, zipModel.FileName, zipModel.FolderRelativePath.ToArray());
}
// Добавить в zip-архив отчет.
var now = Calendar.UserNow;
var generated = Functions.Module.GetFinArchiveExportReport(objs, now);
zip.Add(generated, Sungero.FinancialArchive.Reports.Resources.FinArchiveExportReport.HeaderFormat(now.ToShortDateString() + " " + now.ToLongTimeString()));
// Сохранить zip-архив в хранилище.
zip.Save(fileName);
return zip;
}
После этого в клиентском коде достаточно вызвать метод Export():
var zip = Functions.Remote.CreateZipFromZipModel(...);
zip.Export();
© Компания Directum, 2024 |