我试图使用ZipArchive
类从其他位置创建和下载zip文件。
文件位于不同的文件路径中。我想在c#内存对象中创建一个zip文件,然后下载而不将zip 文件保存在c#/ MVC中。
我尝试过这样:
public void DownloadZipFromMultipleFile()
{
using (var memoryStream = new MemoryStream())
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
archive.CreateEntryFromFile(Server.MapPath("~/Content/appStyle.css"), "myStyle.css");
archive.CreateEntryFromFile(Server.MapPath("~/NewPath/myScript.js"), "script.js");
}
}
//archive.Save(Response.OutputStream);
}
我已成功将文件添加到archive
,但无法将文件下载为zip文件。
答案 0 :(得分:0)
正如 PapitoSh 在评论部分所建议的那样,我在现有代码的基础上增加了几行,现在一切正常。
public void DownloadZipFromMultipleFile()
{
using (var memoryStream = new MemoryStream())
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
archive.CreateEntryFromFile(Server.MapPath("~/Content/appStyle.css"), "myStyle.css");
archive.CreateEntryFromFile(Server.MapPath("~/NewPath/myScript.js"), "script.js");
}
byte[] bytesInStream = memoryStream.ToArray(); // simpler way of converting to array
memoryStream.Close();
Response.Clear();
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=name_you_file.zip");
Response.BinaryWrite(bytesInStream); Response.End();
}
//archive.Save(Response.OutputStream);
}