当前位置: 首页 > 编程语言 > C#

从ASHX将PDF返回到网页Share

时间:2023-04-11 01:43:29 C#

从ASHX将PDF返回到网页我有一个带有“下载”链接的网页。我使用jQuery执行AjaxGet到ASHX文件。在ASHX中,我得到了文件流。然后我将流转换为字节数组并将字节数组返回到调用html页面;jQuery的$(".DownloadConvertedPDF").click(function(){varbookId=$(this).attr("bookId");$.get('/UserControls/download.ashx?format=pdf&bookId='+bookId,{},函数(数据){});});C#context.Response.ContentType="应用程序/pdf";流fileStream=publishBookManager.GetFile(documentId);字节[]缓冲区=新字节[16*1024];使用(MemoryStreamms=newMemoryStream()){intread;while((read=fileStream.Read(buffer,0,buffer.Length))>0){ms.Write(buffer,0,read);}}context.Response.OutputStream.Write(buffer,0,buffer.Length);我没有收到错误,但PDF也没有出现在屏幕上。理想情况下,我希望返回的pdf和jQuery在浏览器的单独选项卡中启动pdf。我怎样才能做到这一点或者我做错了什么?试试这个(不要使用.get):window.open('/UserControls/download.ashx?format=pdf&bookId='+bookId,"pdfViewer");要防止“文件不以‘%PDF’开头”错误,请使用UseResponse.BinaryWrite:context.Response.Clear();context.Response.ClearContent();context.Response.ClearHeaders();context.Response.ContentType="应用程序/pdf";流fileStream=publishBookManager.GetFile(documentId);字节[]缓冲区=新字节[16*1024];使用(MemoryStreamms=newMemoryStream()){intread;while((read=fileStream.Read(buffer,0,buffer.Length))>0){ms.Write(buffer,0,read);}}context.Response.BinaryWrite(数据);context.Response.Flush();使用context.Response.TransmitFile从ashx网络处理程序提供PDF的一种更简洁的方法该方法是:context.Response.Clear();context.Response.ContentType="应用程序/pdf";stringfilePath=System.Web.HttpContext.Current.Server.MapPath(@"~path-toyour-file.pdf");context.Response.TransmitFile(文件路径);我还使用window.open来获取pdf。但是在不登录的情况下直接通过地址栏使用同一个URL总是出现。请问如何解决这个问题。以上就是C#学习教程:从ASHX返回PDF到WebPage的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: