Выгружаемый архив поврежден или имеет не верный формат
Делаю выгрузку архива с бэка. На фронте его выгружаю, но он битый (не открывается).
Думал как-то не так данные пишу в архив, но нет. Дело не в этом. В примере ниже я помещаю в архив только один текстовый файл. Но и этот архив не открывается.
Также вес архива получается слишком маленьким. Что делаю не так ?
var response = new HttpResponseMessage(HttpStatusCode.OK);
using (var ms = new MemoryStream())
{
using (var zipArchive = new ZipArchive(ms, ZipArchiveMode.Create, true))
{
var entry = zipArchive.CreateEntry("file.txt");
}
ms.Position = 0;
response.Content = new StreamContent(ms);
response.Content.Headers.ContentLength = ms.Length;
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "Archive.zip"
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
return response;}
UPD. Кусок кода из работы:
var setting = Configuration.GetTypedSection<MicroSipSettings>("MicroSip");
using (var memoryStream = new MemoryStream())
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
var filepaths = Directory.GetFiles(setting.DirMicroSip);
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (string filepath in filepaths)
{
string filename = Path.GetFileName(filepath);
var entry = archive.CreateEntry(filename);
using (var file = File.OpenRead(Path.Combine(setting.DirMicroSip, filename)))
using (var entryStream = entry.Open())
{
await file.CopyToAsync(entryStream);
}
}
ZipArchiveEntry iniEntry = archive.CreateEntry(setting.NameIni);
using (var sw = new StreamWriter(iniEntry.Open()))
{
sw.WriteLine("[Settings]");
sw.WriteLine("accountId=1");
...
}
}
memoryStream.Position = 0;
response.Content = new StreamContent(memoryStream);
response.Content.Headers.ContentLength = memoryStream.Length;
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "Archive.zip"
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
return response;
}