尝试使用asp.net流式传输PDF文件会产生“损坏的文件”
发布时间:2020-12-15 19:03:11 所属栏目:asp.Net 来源:网络整理
导读:在我的一个asp.net Web应用程序中,我需要隐藏正在向用户提供的pdf文件的位置. 因此,我正在编写一种方法,从CMS系统上的位置检索其二进制内容,然后将字节数组刷新到Web用户. 不幸的是,我在下载流时遇到错误:“无法打开文件,因为它已被删除”(或类似于在adobe
在我的一个asp.net Web应用程序中,我需要隐藏正在向用户提供的pdf文件的位置.
因此,我正在编写一种方法,从CMS系统上的位置检索其二进制内容,然后将字节数组刷新到Web用户. 不幸的是,我在下载流时遇到错误:“无法打开文件,因为它已被删除”(或类似于在adobe reader中打开文件时). 问题1:我做错了什么? private void StreamFile(IItem documentItem) { //CMS vendor specific API BinaryContent itemBinaryContent = documentItem.getBinaryContent(); //Plain old .NET Stream fileStream = itemBinaryContent.getContentStream(); var len = itemBinaryContent.getContentLength(); SendStream(fileStream,len,itemBinaryContent.getContentType()); } private void SendStream(Stream stream,int contentLen,string contentType) { Response.ClearContent(); Response.ContentType = contentType; Response.AppendHeader("content-Disposition",string.Format("inline;filename=file.pdf")); Response.AppendHeader("content-length",contentLen.ToString()); var bytes = new byte[contentLen]; stream.Read(bytes,contentLen); stream.Close(); Response.BinaryWrite(bytes); Response.Flush(); } 解决方法
这是我使用的方法.这会传回一个附件,因此IE会生成一个打开/保存对话框.我也碰巧知道文件不会大于1M,所以我相信有更简洁的方法可以做到这一点.
我对PDF有类似的问题,我意识到我绝对不得不使用二进制流和ReadBytes.任何有字符串的东西搞砸了. Stream stream = GetStream(); // Assuming you have a method that does this. BinaryReader reader = new BinaryReader(stream); HttpResponse response = HttpContext.Current.Response; response.ContentType = "application/pdf"; response.AddHeader("Content-Disposition","attachment; filename=file.pdf"); response.ClearContent(); response.OutputStream.Write(reader.ReadBytes(1000000),1000000); // End the response to prevent further work by the page processor. response.End(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – ImageButton不会在IE10上发回帖子
- asp.net – 如何在工作日的特定时间回收应用程序池?
- asp.net-mvc – 如何将可视化设计器集成到开发过程中?
- asp.net – 从下拉列表中选择OBJECT的问题
- asp.net-mvc-3 – 在ASP.NET MVC 3中覆盖/禁用授权
- JSON字符串反序列化成对象_部分属性值反序列化失败
- asp.net-mvc – 在浏览器的新选项卡中打开PDF
- ASP.NET MVC 3模型绑定资源
- asp.net-mvc – 为dnx rc2运行MVC 6 ASP.NET 5本地化示例
- ASP.NET MVC集成EntLib实现“自动化”异常处理[实例篇]
推荐文章
站长推荐
- asp.net – ListBox不绑定我的viewmodel
- asp.net-mvc – 将布尔属性编辑器转换为MVC视图中
- asp.net-core-mvc – 如何在启动时初始化应用程序
- asp.net-mvc – ViewModel中的ASP.NET MVC Selec
- asp.net-mvc – 如何建立一个ASP.NET MVC应用程序
- asp.net – 不使用.Net MVC犯了错误?
- 如何在SDL Tridion页面上呈现asp.net用户控件?
- 基于ASP.Net Core开发的一套通用后台框架
- asp.net-mvc – 在MVC3中的错误 – 请求永远不会
- ASP.NET mvc:如何使用今天的日期自动填充日期字
热点阅读