C#, ZipArchive, невозможно открыть с помощью WinRAR - архив поврежден
Создаю архив с целью вернуть его клиенту в ответ на HTTP-запрос. Архив скачивается, однако открывается только с помощью 7Zip. WinRAR или Goole Files на смартфоне сообщают о том, что архив поврежден или имеет неизвестный формат. Вот такой код формирует архив:
Подскажите пожалуйста, что я делаю не так? Или ZipArchive не будет работать? Цель - передавать клиенту несколько файлов через браузер как на компьютере, так и на мобильных устройствах.
Ответы (1 шт):
Ниже пример того как я создаю архив для того что бы с сервера отдать клиенту несколько файлов, сформированный архив открывается как при при помощи 7z архиватора так и через проводник системы, WinRar отсутствует, но думаю тоже должен работать
public static FileInfo CreateArchive(this DirectoryInfo directory)
{
var archive = Path.GetTempFileName();
try
{
using (var fs = new FileStream(archive, FileMode.OpenOrCreate))
using (var zip = new ZipArchive(fs, ZipArchiveMode.Create, false, Encoding.GetEncoding("cp866")))
{
foreach (var file in directory.EnumerateFiles("*.*", SearchOption.AllDirectories))
{
var dstFile = file.FullName.Replace(directory.FullName, "").TrimStart('\\');
zip.CreateEntryFromFile(file.FullName, dstFile);
}
}
return new FileInfo(archive);
}
catch (Exception)
{
throw;
}
finally
{
directory.Delete(true);
}
}
