Добавление файлов в ZIP без путей с помощью SharpZipLib

мне нужно объединить 3 файла в 1 zip-файл и сделать его доступным для загрузки для пользователя. Я могу выполнить свое требование, кроме одного: он сжимает файлы во вложенные папки.

например, мои файлы расположены следующим образом:

C:TTCGWebSitesHealthABC.CSV
C:TTCGWebSitesHealthXYZ.CSV
C:TTCGWebSitesHealth3.CSV

но в zip-файле он zip-файлы в папке, используя "TTCGWebSitesHealth" в качестве пути. Пожалуйста, см. Прикрепите файл.

Example

Я не хочу, чтобы папки в путь. Я просто хочу 3 файла в zip-файле без папок. Как я могу этого достичь?

мои коды для создания zip-файла, как показано ниже:

ZipFile z = ZipFile.Create(Server.MapPath("~" + @"Accident.zip"));

//initialize the file so that it can accept updates
z.BeginUpdate();

//add the file to the zip file        
z.Add(Server.MapPath("~" + @"ABC.csv"));
z.Add(Server.MapPath("~" + @"XYZ.csv"));
z.Add(Server.MapPath("~" + @"3.csv"));        

//commit the update once we are done
z.CommitUpdate();
//close the file
z.Close();

3 ответов


на основе FAQ, вы должны удалить путь к папке вручную:

как я могу создать zip-файл, без папок?

удалите часть пути файла, используемого для создания ZipEntry перед добавлением в ZipOutputStream

ZipEntry entry = new ZipEntry(Path.GetFileName(fullPath));

FAQ можно найти здесь.

похоже, это ограничение библиотеки. Надеюсь, это поможет!


Если у вас есть файлы в FileSystemInfo, вы можете использовать:z.Add(file.FullName, Path.GetFileName(file.FullName));

Это добавит ваши файлы в корневой каталог вашего zip.


z.Add(pathToFile, pathInZipFile);