Создание 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, "");