gpt4 book ai didi

返回多个文件的 C# MVC ActionResult

转载 作者:太空狗 更新时间:2023-10-30 01:05:43 24 4
gpt4 key购买 nike

MVC ActionResult 可以返回多个文件吗?如果是这样,它可以返回多种类型的多个文件吗?

例子:
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

关于返回多个文件的 C# MVC ActionResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17617568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com