从MVC操作返回多个文件

Gio*_*i B 16 asp.net asp.net-mvc download asp.net-mvc-3

所以我有一个MVC 3应用程序,它有几个地方生成一个文本文件,并在一个动作中返回,使用:

return File(System.Text.Encoding.UTF8.GetBytes(someString),
                 "text/plain", "Filename.extension");
Run Code Online (Sandbox Code Playgroud)

这非常有效.现在我有一种情况,我试图以类似的方式返回一对文件.在视图上,我有一个动作链接,如"单击此处获取这两个文件",我想要下载这两个文件,就像在上面的代码片段中下载单个文件一样.

我怎样才能做到这一点?一直在寻找相当多,甚至没有看到任何地方提出这个问题......

toc*_*han 22

以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");
Run Code Online (Sandbox Code Playgroud)


jaz*_*cat 6

抱歉提出了一个老问题,但是......

另一种替代方法是使用 JavaScript 启动多个文件下载,并在 ASP.NET 端以两种不同的操作方法提供文件。

你说你有一个链接:

在视图上,我有一个操作链接,例如“单击此处获取这两个文件”

所以让这个链接像这样:

<a href="#" onclick="downloadFile(url1); downloadFile(url2);">Click to get 2 files</a>
<script src="download.js"></script>
Run Code Online (Sandbox Code Playgroud)

我正在使用此处download.js找到的脚本,但您可以找到很多不同的其他选项,请参阅这个问题:starting file download with JavaScript for example