ASP MVC Download Zip Files

后端 未结 1 1655
醉话见心
醉话见心 2020-12-20 05:42

i have a view where i put the id of the event then i can download all the images for that event..... here\'s my code

[HttpPost]
    public ActionResult Index         


        
相关标签:
1条回答
  • 2020-12-20 06:19

    In MVC, rather than returning a view, if you want to return a file, you can return this as an ActionResult by doing:

    return File(zipFile.GetBytes(), "application/zip", downloadFileName);
    // OR
    return File(zipFile.GetStream(), "application/zip", downloadFileName);
    

    Don't mess about with manually writing to the output stream if you're using MVC.

    I'm not sure if you can get the bytes or the stream from the ZipFile class though. Alternatively, you might want it to write it's output to a MemoryStream and then return that:

     var cd = new System.Net.Mime.ContentDisposition {
         FileName = downloadFileName,
         Inline = false, 
    };
    Response.AppendHeader("Content-Disposition", cd.ToString());
    var memStream = new MemoryStream();
    zipFile.Save(memStream);
    memStream.Position = 0; // Else it will try to read starting at the end
    return File(memStream, "application/zip");
    

    And by using this, you can remove all lines in which you are doing anything with the Response. No need to Clear or AddHeader.

    0 讨论(0)
提交回复
热议问题