加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用响应流的MVC控制器

发布时间:2020-12-16 00:03:19 所属栏目:asp.Net 来源:网络整理
导读:我正在使用MVC 3我想动态创建一个CSV文件供下载,但我不确定正确的MVC导向方法. 在传统的ASP.net中,我会写一些类似的东西: Response.ClearHeaders();Response.ContentType = "text/csv";Response.AddHeader("content-disposition",attachment;filename='Test
我正在使用MVC 3我想动态创建一个CSV文件供下载,但我不确定正确的MVC导向方法.

在传统的ASP.net中,我会写一些类似的东西:

Response.ClearHeaders();
Response.ContentType = "text/csv";
Response.AddHeader("content-disposition",attachment;filename='Test.csv'");
Response.Write("1,2,3");
Response.End();

我查看了ContentResult操作,但似乎我需要将结果创建为字符串,即

return Content(myData,“text / csv”);

我想,我可以构建一个字符串,但由于这些文件可能长达几千行,这对我来说似乎效率低下.

有人能指出我正确的方向吗?谢谢.

解决方法

我昨天在类似的问题上花了一些时间,这里是如何正确地做到这一点:
public ActionResult CreateReport()
{
    var reportData = MyGetDataFunction();
    var serverPipe = new AnonymousPipeServerStream(PipeDirection.Out);
    Task.Run(() => 
    {
        using (serverPipe)
        {
             MyWriteDataToFile(reportData,serverPipe)
        }
    });

    var clientPipe = new AnonymousPipeClientStream(PipeDirection.In,serverPipe.ClientSafePipeHandle);
    return new FileStreamResult(clientPipe,"text/csv");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读