写PDF流响应流

如果我有一个PDF文件作为一个流,我怎么能写的响应输出流?

--------------解决方案-------------

由于您使用的MVC,最好的办法是使用FileStreamResult

return new FileStreamResult(stream, "application/pdf")
{
result.FileDownloadName = "file.pdf";
};

与播放Response.WriteResponse.OutputStream从控制器非地道,而且也没有理由当一个已经存在编写自己的ActionResult。

做到这一点的方法之一是如下:

//assuming you have your FileStream handle already - named fs
byte[] buffer = new byte[4096];
long count = 0;

while ((count = fs.Read(buffer, 0, buffer.Length)) > 0)
{
response.OutputStream.Write(buffer, 0, count);
response.Flush();
}

还可以使用GZIP压缩以加速文件的传送到客户机(较少字节流)。

在asp.net这是下载一个PDF文件的方式

Dim MyFileStream As FileStream
Dim FileSize As Long

MyFileStream = New FileStream(filePath, FileMode.Open)
FileSize = MyFileStream.Length

Dim Buffer(CInt(FileSize)) As Byte
MyFileStream.Read(Buffer, 0, CInt(FileSize))
MyFileStream.Close()

Response.ContentType = "application/pdf"
Response.OutputStream.Write(Buffer, 0, FileSize)
Response.Flush()
Response.Close()

HTTP响应是通过暴露给你一个流HttpContext.Response.OutputStream属性,所以如果你有一个流中的PDF文件,你可以简单地从一个流的数据复制到其他:

CopyStream(pdfStream, response.OutputStream);

为了实现CopyStream看到两个流实例之间复制的最佳方式- C#

请试试这个:

protected void Page_Load(object sender, EventArgs e) {
Context.Response.Buffer = false;
FileStream inStr = null;
byte[] buffer = new byte[1024];
long byteCount; inStr = File.OpenRead(@"C:\Users\Downloads\sample.pdf");
while ((byteCount = inStr.Read(buffer, 0, buffer.Length)) > 0) {
if (Context.Response.IsClientConnected) {
Context.Response.ContentType = "application/pdf";
Context.Response.OutputStream.Write(buffer, 0, buffer.Length);
Context.Response.Flush();
}
}
}

分类:C# 时间:2012-01-01 人气:0
本文关键词: asp.net,asp.net的MVC
分享到:

相关文章

  • 转换一个Telerik的ASP.NET应用程序来MVC? 2012-03-09

    我已经做了打探此一点点,我希望它并不像我想象的那样糟糕. 我使用Telerik的控制ASP.NET AJAX集成到MVC解决方案ASP.NET项目. 在.NET项目运行正常,但在一个方孔圆形块. 我Telerik控制之间的相互作用是复杂的. 是否有可能(在这个当前时间)使用Telerik的MVC控制重现相同的功能? 举例来说,我期待嵌套控件动态添加到RadSplitter. 这是全部完成服务器端的面前,我注意到,RadSplitter为MVC中的客户端功能缺乏. 我不是从概念上它是什么熟悉的MV

  • 自Asp.net服务器控件将在MVC和Web窗体工作? 2012-04-12

    是否有可能开发将在两个Asp.net Web Forms和MVC工作的控制? 看来,我们的形势走向,我们现在必须保持另一套过来,上面的代码为MVC代码中保持Silverlight和Web Forms和天知道还有什么. --------------解决方案------------- 这是可能的,但不漂亮. MVC不具备ViewState .

  • 如何开发ASP.net/ASP.net MVC一个基于可插拔/安装的模块中的应用 2012-08-06

    我设计方法 - 其中将有许多子应用程序在它的应用程序的体系结构. 这些子应用程序将是由我们,但在稍后的阶段发展. 我想创建那些子应用程序作为可安装的插件/哪些可能具有多页(.aspx页),其应该能够与主芯的应用交互,也消耗了共享数据模块. 我严格需要的插件/模块是通过操纵配置或 添加文件 或DLL 的文件夹安装. 我的应用程序将是一个ASP.net Web应用程序. 如果ASP.net MVC解决了这个目的,那么我也可以查找该还. 我的应用程序将使用的URL识别模块被加载. 以下是一些网址,我希

  • ASP.Net Web表单+ MVC - 除了回传工作? 2012-08-23

    我一直在关注上,以结合ASP.Net Web表单+ MVC('混合'ASP.Net网站)迁移到我们的传统Web应用程序之一,一些文章. 我想我已经设法获得大部分功能在迁移应用程序的地方,但我发现,如GridView的控制失去了状态,当我回来后(使用ASP.Net AJAX,以及在这一点). 代码大致如下,当用户点击某行"编辑": public int GetActivityTypeId(int index) { // Get the row data from the grid Gri

  • 在ASP.NET / ASP.NET MVC SSI-like特征 2012-08-30

    这可能是一种异端的问题. 我们有大量的网站,很多网页仍然在ASP. 大多数情况下,有没有真正动态的,但它们包括(通过SSI或使用Server.Execute)HTML周期性再生块. 它可能看起来像一个穷人的缓存,但它一直在努力真的很好,我猜测,微软已经高度优化IIS为这种情况. 现在,我们希望能够实现ASP.NET / ASP.NET MVC类似的东西. 我们将周期性地生成的HTML代码段(通常为每小时左右),我们希望包括到ASP.NET / ASP.NET MVC包装提供的主要场所铬,一些导航

  • 其中表现最好:经典ASP,ASP.NET的WebForms或ASP.NET MVC? 2012-10-28

    我最近转换一个传统的ASP应用到ASP.NET 3.5,但我觉得我的经典ASP版本是快一点(我不知道可能是购房者懊悔). 所以,你们可以帮我这个,让我知道哪一个是快,ASP,asp.net或ASP.NET MVC. 我搜索了这个问题,就这么,并没有发现任何东西,如果你发现了什么,请指向问题,标志着我作为重复的问题 感谢你们. --------------解决方案------------- 经典ASP将解释脚本在每次页面请求的页面. ASP.NET将编译代码的页面一次. ASP.NET几乎总是表现

  • ThreadAbortException,传统的ASP和ASP.NET MVC应用程序 2012-12-20

    我也得到那个"线程已被中止"错误消息. 我知道这是一个老问题,但我不认为这是一个重定向的东西(至少里面没有.NET,因为我没有Response.Redirects那里 - 只是会叫的Response.Redirect(网址,假RedirectResults)内部)*我不认为这是一个循环的问题,由于活动无论是. 这是发生在不同的场景,而是一个叫我注意的是:我有一个window.open(URL)被称为传统的ASP页面内. 该URL映射到ASP.NET MVC控制器操作**. 有时,当这个

  • 传统的ASP在ASP.NET MVC(C#) 2013-06-13

    我有,我想(最终)转换为ASP.NET MVC应用程序. 我想做的事情全力以赴服务升级(到ASP.NET),但希望使用现有的ASP的东西来运行当前的功能,这样我就可以升级小块,同时使增量升级到新的框架. 这个网站是严重依赖VB6的DLL还不是很成熟,所以我们也将需要升级这最终也有可能取代目前的功能与Web服务. 是否有一个快速的解决,或者这是任务的3个月+任务吗? 此外,我肯定已经想到过,在MVC的美妙之处在于,我觉得有一种方法来解决这个问题,但我不能确定从哪里开始. 什么是这个应用程序转换(4

  • 传统的ASP和ASP.NET MVC可以在同一个网站上运行并排侧? 2014-02-03

    只是一个快速的问题. 我想我可以尝试,但我喜欢,因为快速反应和人更有经验比我的意见计算器. 传统的ASP和ASP.NET MVC可以在同一个网站上运行并排侧? 例如; 该网站可能会遇到写在ASP.NET MVC一个CMS,但需要与总部设在传统的ASP车无缝集成. 这可能吗? 它是一个非常糟糕的主意? 当然,最好的情况是有两个购物车和CMS使用ASP.NET MVC ......但让我们说,没有时间来开发车,并已经有一个可用传统的ASP购物车. --------------解决方案--------

  • 使用ASP.net的WebForms或MVC咨询 2014-04-01

    我有一个面向公众的业余爱好网站,得到约3000独立访问者,每天写在传统的ASP是在恶劣的需要的改造和重新设计. 我所面临认识到升级到ASP.net是去实现的功能,实在太辛苦ASP为爱好者的最佳方式(消费RSS源,身份验证和用户配置文件),但我渴望得到插着一旦我得到过去的重新设计/升级. 但是,我一直瘫痪的不确定性有关哪个方向走:Web窗体或MVC - 加的事实,似乎总是一些新版本的推出,似乎像这将是值得坚持要以提高学习曲线. 所以,我花时间阅读有关的WebForms然后阅读的东西,告诉我,我可能

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.363 (s). 10 q(s)