当前位置:  开发笔记 > 编程语言 > 正文

FileContentResult和FileStreamResult之间的区别

如何解决《FileContentResult和FileStreamResult之间的区别》经验,为你挑选了2个好方法。

我正在编辑一些代码,有一种返回FileContentResult类型的方法.我从服务中获得了一个流,所以对我而言,将返回类型更改为更方便FileStreamResult.

我应该将流转换为数组返回FileContentResult吗?

或者我可以安全地改变返回类型吗?



1> Shyju..:

双方FileStreamResultFileContentResult继承FileResult从继承ActionResult.因此,您可以从具有ActionResult返回类型的方法返回一种类型

如果您已有流,则可以使用FileStreamResult构造函数返回FileResult

public ActionResult Download()
{
    var f = Server.MapPath("~/Content/mypdf.pdf");
    var fileStream = new FileStream(f,FileMode.Open,FileAccess.Read);
    return new FileStreamResult(fileStream, MimeMapping.GetMimeMapping(f));
}

如果你已经有一个字节arrray,你可以使用FileContentResult构造函数返回一个FileResult

public ActionResult Download()
{
    var f = Server.MapPath("~/Content/mypdf.pdf");
    var bytes = System.IO.File.ReadAllBytes(f);
    return new FileContentResult(bytes, MimeMapping.GetMimeMapping(f));
}

Controller.File方法具有过载,该过载采用字节数组或流

public ActionResult Download()
{
    var f = Server.MapPath("~/Content/mypdf.pdf");
    var bytes = System.IO.File.ReadAllBytes(f);
    return File(bytes, MimeMapping.GetMimeMapping(f));
}
public ActionResult Download2()
{
    var f = Server.MapPath("~/Content/mypdf.pdf");
    var fileStream = new FileStream(f, FileMode.Open, FileAccess.Read);
    return File(fileStream, MimeMapping.GetMimeMapping(f));
}

如果浏览器支持显示响应的内容类型,则响应将显示在浏览器中.例如,对于上面的代码,它将在浏览器中显示pdf内容.

该方法的另一个重载是File获取浏览器的保存/下载对话框将使用的下载文件名,以便用户可以将其保存到本地计算机和/或打开.

public ActionResult Download4()
{
    var f = Server.MapPath("~/Content/mypdf.pdf");
    var fileStream = new FileStream(f, FileMode.Open, FileAccess.Read);
    return File(fileStream, MimeMapping.GetMimeMapping(f),"MyfileNiceFileName.pdf");
}

有了这个,用户将从浏览器获得下载提示.


客户无法区分.客户端无法找出用于向浏览器发送字节的.NET类.

2> casillas..:

FileResult 是所有其他人的抽象基类.

FileContentResult - 当您有一个要作为文件返回的字节数组时使用它

FileStreamResult - 您打开了一个流,您希望将其内容作为文件返回

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有