Asp.net
從 MVC 操作返回多個文件
所以我有一個 MVC 3 應用程序,它有幾個地方生成文本文件並在操作中返回:
return File(System.Text.Encoding.UTF8.GetBytes(someString), "text/plain", "Filename.extension");這非常有效。現在我遇到了一種情況,我試圖以類似的方式返回一對文件。在視圖中,我有一個操作連結,例如“點擊此處獲取這 2 個文件”,我希望下載這兩個文件,就像在上面的程式碼片段中下載單個文件一樣。
我怎樣才能做到這一點?一直在搜尋,甚至沒有看到任何地方提出這個問題……
基於 Yogendra Singh 的想法並使用DotNetZip:
var outputStream = new MemoryStream(); using (var zip = new ZipFile()) { zip.AddEntry("file1.txt", "content1"); zip.AddEntry("file2.txt", "content2"); zip.Save(outputStream); } outputStream.Position = 0; return File(outputStream, "application/zip", "filename.zip");2019 年4 月 10 日更新: 正如 @Alex 所指出的,自 .NET Framework 4.5 起,來自JitBit和其他人的本地支持壓縮:
using (var memoryStream = new MemoryStream()) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { var file1 = archive.CreateEntry("file1.txt"); using (var streamWriter = new StreamWriter(file1.Open())) { streamWriter.Write("content1"); } var file2 = archive.CreateEntry("file2.txt"); using (var streamWriter = new StreamWriter(file2.Open())) { streamWriter.Write("content2"); } } return File(memoryStream.ToArray(), "application/zip", "Images.zip") }