MVC ActionResult
可以返回多個文件嗎?如果是這樣,它可以返回多個類型的文件嗎?返回多個文件的C#MVC ActionResult
示例:
Can ActionResult
是否可以返回myXMLfile1.xml,myXMLfile2.xml和myfile3.xml?
可以通過ActionResult
返回myXMLfile4.xml和myTXTfile1.txt嗎?
這怎麼可能完成?
MVC ActionResult
可以返回多個文件嗎?如果是這樣,它可以返回多個類型的文件嗎?返回多個文件的C#MVC ActionResult
示例:
Can ActionResult
是否可以返回myXMLfile1.xml,myXMLfile2.xml和myfile3.xml?
可以通過ActionResult
返回myXMLfile4.xml和myTXTfile1.txt嗎?
這怎麼可能完成?
您不能返回倍數文件,但是,你可以在一個.zip
文件壓縮多個文件,並返回該壓縮後的文件,樣品,在項目中創建一個自定義的ActionResult,這樣的:
public class ZipResult : ActionResult
{
private IEnumerable<string> _files;
private string _fileName;
public string FileName
{
get
{
return _fileName ?? "file.zip";
}
set { _fileName = value; }
}
public ZipResult(params string[] files)
{
this._files = files;
}
public ZipResult(IEnumerable<string> files)
{
this._files = files;
}
public override void ExecuteResult(ControllerContext context)
{
using (ZipFile zf = new ZipFile())
{
zf.AddFiles(_files, false, "");
context.HttpContext
.Response.ContentType = "application/zip";
context.HttpContext
.Response.AppendHeader("content-disposition", "attachment; filename=" + FileName);
zf.Save(context.HttpContext.Response.OutputStream);
}
}
}
而且使用它是這樣的:
public ActionResult Download()
{
var zipResult = new ZipResult(
Server.MapPath("~/Files/file1.xml"),
Server.MapPath("~/Files/file2.xml"),
Server.MapPath("~/Files/file3.xml")
);
zipResult.FileName = "result.zip";
return zipResult;
}
查看更多在這裏:http://www.campusmvp.net/blog/asp-net-mvc-return-of-zip-files-created-on-the-fly
謝謝菲利普! ZipResult是否與gzip文件相同? –
正如我們在上面發佈的代碼中看到的那樣,'ZipResult'類使用'SharpZipLib'庫來壓縮文件,您可以在NuGet上找到它並在您的應用程序中添加引用。你也可以改變壓縮文件的方式,但主要想法是一樣的:)。 –
一種方法來完成,這是創建一個包含所有要漚的文件的zip文件甕,只是作爲一個單一的文件返回。 – yoozer8