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)
抱歉提出了一个老问题,但是......
另一种替代方法是使用 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