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

asp.net-mvc-3 – ASP.net MVC ActionResult在从MemoryStream返

发布时间:2020-12-16 06:59:11 所属栏目:asp.Net 来源:网络整理
导读:我在Controller中有以下操作 public ActionResult DownloadExcel() { //create and populate Excel file here C1XLBook testBook = new C1XLBook(); //populate it here MemoryStream ms = new MemoryStream(); testBook.Save(ms,FileFormat.Biff8); return
我在Controller中有以下操作

public ActionResult DownloadExcel()
        {
            //create and populate Excel file here
            C1XLBook testBook = new C1XLBook(); 
            //populate it here

            MemoryStream ms = new MemoryStream();
            testBook.Save(ms,FileFormat.Biff8);

            return File(ms,"application/ms-excel","test-file.xls");           
        }

打开文件时,我收到Excel消息,指出该文件与扩展名不匹配,文件打开已损坏.

如果我将文件保存在硬盘驱动器上并从那里返回,一切都很好:

return base.File(@"C:LOGStest-file.xls","test-excel.xls");

我最初认为保存功能在将其保存到MemoryStream时会破坏它,所以我保存并重新加载它并且很好地传回给用户 – 当保存在硬盘驱动器上并从那里返回时,而不是从的MemoryStream

有任何想法吗?我不太喜欢将文件保存在硬盘上….此外我应该能够将它保存到MemoryStream并从那里返回它?

我有一个预感,也许MemoryStream不应该用于返回MVC中的文件,因为每个请求都是隔离的?

解决方法

在将结果传递给结果之前,您可能需要倒回内存流(设置ms.Position = 0;)?在保存其位置的呼叫将结束,而不是开始.

(编辑:李大同)

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

    推荐文章
      热点阅读