Создание 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-файла:

например

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

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

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

Папка 1 ("SoftwareDevelopment")

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

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

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

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

1 ответ

Решение

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

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

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

loanZip.AddFiles(documentPaths, false, zipDestinationPath);

в

loanZip.AddFiles(documentPaths, false, "");
Другие вопросы по тегам