- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在编辑一些代码,有一种方法返回 FileContentResult
类型。我从服务中获取流,所以对我来说,将返回类型更改为 FileStreamResult
会更方便。
我应该将流转换为数组以返回 FileContentResult
吗?
或者我可以安全地更改返回类型吗?
最佳答案
FileStreamResult
和FileContentResult
都继承自FileResult
,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));
}
如果您已经有了一个字节数组,您可以使用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");
}
这样,用户将从浏览器收到下载提示。
关于c# - FileContentResult 和 FileStreamResult 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34498184/
我正在使用 FileContentResult 方法下载生成的 PDF 文件。运行这段代码后 public FileContentResult genPDF(PDFFileData m) {
我正在从对操作方法的调用中返回图像 (png),我想停止浏览器缓存图像。 return File(reply, "image/png", "{0}_Graph".FormatWith(ciName))
我有一个 Controller 操作,它根据容器引用名称(即 blob 中文件的完整路径名)从 azure blob 下载文件。代码看起来像这样: public FileContentResult G
我有 API 端点,当用户被授权访问文件时,它返回 FileContentResult。当用户没有访问权限时,我想返回 Unauthorized/401 错误。 [HttpGet] [Authoriz
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个将数据导出到 CSV 文件的方法。 public FileContentResult Index(SearchModel search) { ... if (search
我想从 FileContentResult 结果方法返回一个“默认图像”,而不是 null。基本上,我在整个项目的多个 View 中调用了以下方法。但问题是,当检索方法没有 Image 时,它返回
我正在使用 fileContentResult 将文件呈现到浏览器。它工作得很好,只是当文件名包含国际字符时它会抛出异常。我记得在某处读到过此功能不支持国际字符,但我确信在应用程序需要在美国以外的国家
我有一个从字节数组中获取的 FileContentResult,我想将其转换为 FileStreamResult。这可能吗?如果是这样,如何? 最佳答案 首先,我对 MVC 了解不多,但听起来您不需要
我正在编辑一些代码,有一种方法返回 FileContentResult 类型。我从服务中获取流,所以对我来说,将返回类型更改为 FileStreamResult 会更方便。 我应该将流转换为数组以返回
在我的 MVC 项目中,我的 View 上生成了一个图表,如下所示 它调用一个返回 FileContentResult 的 Controller Function GetChart() As Fil
我的 Controller 操作之一将文件返回给用户。我希望向用户显示下载(打开/保存)对话框,无论文件类型如何。当文件类型为 .doc、.docx、.xlsx 等时,此方法工作正常,但当文件为 .t
我正在尝试使用 Rotativa用于在 Web 服务器磁盘上永久存储(而不是显示)发票副本的组件。两个问题: 为什么我需要指定 Controller 操作? (“索引”,在此案例) 如何将 FileC
目前,我有以下操作从我的数据库返回文件(图像、PDF 等): // // GET: /FileManager/GetFile/ID [OutputCache(Duration
我有这样的 MVC 路线: public FileContentResult GetMedia(string media_md5) { // get media from DB here
在生成的报告列表中,有一个下载它们的链接。这些报告的内容存储在数据库中。当我执行下载报告时,使用以下代码: return new FileContentResult (report.FileConte
我当前正在尝试查看以 BLOB 形式存储在数据库中的图像,为此我创建了一个 FileContentResult 类型的 Controller 操作,如下所示: public FileContentRe
我正在从 MVC 3 网站生成 CSV,并使用 FileContentResult 将其传递给用户。这效果很好,但生成 csv 需要 30 秒,因此在提示用户保存之前需要 30 秒。 publ
在常规 MVC Controller 中,我们可以使用 FileContentResult 输出 pdf。 public FileContentResult Test(TestViewModel vm
在常规 MVC Controller 中,我们可以使用 FileContentResult 输出 pdf。 public FileContentResult Test(TestViewModel vm
我是一名优秀的程序员,十分优秀!