Создание 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 без сохранения пути к папкам?
Ответы
Ответ 1
В документации говорится, что третий параметр
directoryPathInArchive (String)
Указывает путь к каталогу, который будет использоваться для переопределения любого пути в имени файла. Этот путь может соответствовать или не соответствовать реальному каталогу в текущей файловой системе. Если файлы внутри zip файла извлекаются позже, это путь, используемый для извлеченного файла. Передача пустого значения (ничего в VB) будет использовать путь к каждому из имен файлов, если они есть. Если передать пустую строку (""), элемент будет вставлен в корневой каталог архива.
Поэтому, если вы всегда хотите, чтобы файлы были добавлены в корневой каталог вашего zip-архива, измените
loanZip.AddFiles(documentPaths, false, zipDestinationPath);
в
loanZip.AddFiles(documentPaths, false, "");
Ответ 2
Вышеуказанные решения работают отлично, спасибо!