Если у вас уже есть zip-файл в вашей системе, вам не нужно делать что-то особенное перед отправкой в качестве ответа.
Это должно работать:
string filePath = @"C:\myfolder\myfile.zip";
return File(filePath, "application/zip");
Есливы создаете файл на лету, то есть получаете другие файлы и программно помещаете их в zip-файл для пользователя, должно работать следующее:
public IActionResult GetZipFile(){
//location of the file you want to compress
string filePath = @"C:\myfolder\myfile.ext";
//name of the zip file you will be creating
string zipFileName = "zipFile.zip";
byte[] result;
using (MemoryStream zipArchiveMemoryStream = new MemoryStream())
{
using (ZipArchive zipArchive = new ZipArchive(zipArchiveMemoryStream, ZipArchiveMode.Create, true))
{
ZipArchiveEntry zipEntry = zipArchive.CreateEntry(zipFileName);
using (Stream entryStream = zipEntry.Open())
{
using (MemoryStream tmpMemory = new MemoryStream(System.IO.File.ReadAllBytes(filePath)))
{
tmpMemory.CopyTo(entryStream);
};
}
}
zipArchiveMemoryStream.Seek(0, SeekOrigin.Begin);
result = zipArchiveMemoryStream.ToArray();
}
return File(result, "application/zip", zipFileName);
}
Это взято из недавнего проекта ASP.NETмоего собственного.