尝试使用asp.net流式传输PDF文件会产生“损坏的文件”
发布时间:2020-05-23 08:07:54 所属栏目:asp.Net 来源:互联网
导读:在我的一个asp.net Web应用程序中,我需要隐藏正在向用户提供的pdf文件的位置. 因此,我正在编写一种方法,从CMS系统上的位置检索其二进制内容,然后将字节数组刷新到Web用户. 不幸的是,我在下载流时遇到错误:“无法打开文件,因为它已被删除”(或类似于在adobe r
|
在我的一个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 Web服务生成JSONP以进行跨域调用?
- asp.net-mvc – 单选按钮如何与asp.net mvc绑定一起使用
- asp.net – 在为app_offline.htm提供特定URL时,将http状态5
- asp.net – 停止从域(也称为“无Cookie域”)设置Cookie以增
- ASP.NET MVC路由的无限URL参数
- asp.net-mvc – 在活动的SignalR连接期间更改用户身份 – 如
- asp.net – ASP MVC用户配置文件
- asp.net – 如何在iTextSharp中显示水平线
- asp.net-mvc – 在视图中转义JavaScript字符串文字
- asp.net – 什么是asp:DropDownList客户端事件?
推荐文章
站长推荐
- ASP.NET设计网络硬盘之删除文件夹实现代码
- asp.net – 如何通过代码显示无
- asp.net-mvc – 可以通过RedirectToAction传递模
- asp.net-mvc – ASP MVC Razor视图扩展方法,如何
- asp.net – 如何禁用通过IIS提供的单页面应用程序
- asp.net – Global.asax PostAuthenticateReques
- asp.net-mvc-3 – 重定向与RedirectToRouteResul
- asp.net-mvc – Asp.Net MVC – “动态”路由的最
- 在ASP.NET中开发SharePoint Web部件
- asp.net-mvc-4 – 如何通过ASP.NET MVC中的Simpl
热点阅读
