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

使用asp.net Web表单中的流返回可下载文件

发布时间:2020-12-16 04:17:43 所属栏目:asp.Net 来源:网络整理
导读:在asp.net MVC中,我可以执行以下操作,这将打开一个流: Stream strm1 = GenerateReport(Id);return File(strm1,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","Report_" + reportId.ToString() + ".xlsx"); 注意我是如何传递strm1这
在asp.net MVC中,我可以执行以下操作,这将打开一个流:
Stream strm1 = GenerateReport(Id);

return File(strm1,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","Report_" + reportId.ToString() + ".xlsx");

注意我是如何传递strm1这是一个流.我可以将其命名为Report_ … xlsx,就像上面的例子所示.

是否有类似的方法使用c#与asp.net Web表单执行此操作.

解决方法

如果文件位于您的网站文件夹中,则可以使用 TransmitFile或 WriteFile.
string fileName = string.Format("Report_{0}.xlsx",reportId);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition",string.Format("attachment; filename={0}",fileName));
Response.TransmitFile(fileName);
Response.End();

如果您的数据已经在内存中,则需要使用此方法将响应写入块中.

Stream stm1 = GenerateReport(Id);
Int16 bufferSize = 1024;
byte[] buffer = new byte[bufferSize + 1];

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition",string.Format("attachment; filename="Report_{0}.xlsx";",reportId));
Response.BufferOutput = false;
int count = stm1.Read(buffer,bufferSize);

while (count > 0)
{
    Response.OutputStream.Write(buffer,count);
    count = stm1.Read(buffer,bufferSize);
}

(编辑:李大同)

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

    推荐文章
      热点阅读