首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从FileResult中获取文件?

如何从FileResult中获取文件?
EN

Stack Overflow用户
提问于 2012-05-28 16:48:31
回答 2查看 2.4K关注 0票数 1

简而言之:我有一个第三方MVC扩展,它返回FileResult。我希望在将文件返回给客户端之前能够对其进行处理。我该怎么做呢?

如果你对无聊的细节感兴趣,请阅读下面的内容:

我正在使用Devexpress XtraReports进行报告。问题是,它的PDF导出是可怕的,但RTF one工作很好。我想创建动作和结果过滤器,这将欺骗DevExpress生成rtf而不是pdf (完成),并使用其他一些第三方库将rtf转换为pdf。唯一的问题是,我需要从FileResult获取rtf文件,并返回我自己的FileResult与转换后的内容。

//EDIT:现在的代码如下所示:

代码语言:javascript
运行
复制
        public virtual ActionResult ReportExport(TParameters parameters)
        {
            return DevExpress.Web.Mvc.ReportViewerExtension.ExportTo(this.GetReport(parameters));    
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-28 19:59:59

您说您正在使用一个返回FileResult的第三方MVC扩展,并且您希望访问包装在结果中的文件详细信息。

如果你看到FileResult,它是一个抽象的类,我只知道MVC中有三个内置的实现(我不知道其他的):FileContentResultFileStreamResultFilePathResult

所有这些类都提供了公共属性来访问文件的详细信息。对于ex。FileContentResult包含一个名为FileContents的公共属性,该属性以字节数组的形式返回文件内容。

第三方扩展可以返回内置类型的任何FileResult实现,也可以返回它们自己的类型(如果无法访问这些类型)。您可以检查返回的FileResult实例的类型,并进行相应的强制转换,以访问文件详细信息。

代码语言:javascript
运行
复制
var fileResult = ... returned by the MVC extension

if(fileResult is FileContentResult)
{
   var fileContentResult = fileResult as FileContentResult;   
   var fileContent = fileContentResult.FileContents;
   // process the file
}
else if(fileResult is FileStreamResult)
{
   var fileStreamResult = fileResult as FileStreamResult;
   var fileStream = fileStreamResult .Stream;
   //...
}
else if(fileResult is FilePathResult) // this result only contains the path 
                                      // of the file name
{
  //...
}

如果您想让这些东西可重用,您可以实现一个自定义文件结果,该文件结果获取由构造函数中的扩展返回的FileResult并覆盖WriteFile方法。

票数 4
EN

Stack Overflow用户

发布于 2012-05-28 17:09:18

FileResult可能会将文件内容写入响应流。您可以通过筛选器使用标准ASP.NET响应流。请参阅这篇古老的文章了解详细信息:

http://www.4guysfromrolla.com/articles/120308-1.aspx

或者,您可以创建自己的ActionResult,它使用带有伪响应流的自定义FileResult调用DevExpress HttpContext,您可以在其中进行转换。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10781792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档