Подтвердить что ты не робот

Создание zip файла с помощью ionic.zip

У меня есть следующий код, настроенный для создания zip файла из набора документов:

    public bool CreateDocumentationZipFile(int documentIdentifier, string zipDestinationPath, IList<string> documentPaths)        
    {
        bool zipped = false;

        if (documentPaths.Count > 0)
        {
            using (ZipFile loanZip = new ZipFile())
            {
                loanZip.AddFiles(documentPaths, false, zipDestinationPath);
                loanZip.Save(string.Format("{0}{1}.zip",zipDestinationPath, documentIdentifier.ToString()));
                zipped = true;
            }
        }

        return zipped;
    }

Проблема заключается в том, что при создании zip файла структура папок поддерживается в zip файле:

например

Я создаю zip из нескольких документов, расположенных в

C:\SoftwareDevelopment\Филиалы\ScannedDocuments\

Когда созданный zip файл открывается, в zip файле есть структура папки:

Папка 1 ( "SoftwareDevelopment" )

Внутри папки 1 находится папка 2 ( "Ветки" )

Внутри папки 2 находится папка 3 ( "ScannedDocuments" )

папка отсканированных документов затем содержит фактические файлы сканирования.

Может ли кто-нибудь сказать мне, как я могу просто иметь файлы сканирования в zip без сохранения пути к папкам?

4b9b3361

Ответ 1

В документации говорится, что третий параметр

directoryPathInArchive (String)
Указывает путь к каталогу, который будет использоваться для переопределения любого пути в имени файла. Этот путь может соответствовать или не соответствовать реальному каталогу в текущей файловой системе. Если файлы внутри zip файла извлекаются позже, это путь, используемый для извлеченного файла. Передача пустого значения (ничего в VB) будет использовать путь к каждому из имен файлов, если они есть. Если передать пустую строку (""), элемент будет вставлен в корневой каталог архива.

Поэтому, если вы всегда хотите, чтобы файлы были добавлены в корневой каталог вашего zip-архива, измените

loanZip.AddFiles(documentPaths, false, zipDestinationPath);

в

loanZip.AddFiles(documentPaths, false, "");

Ответ 2

Вышеуказанные решения работают отлично, спасибо!