经典 ASP:如何显示 Json 返回的 PDF

Classic ASP: how to show a PDF that is returned by Json

我想让用户下载在 Json 请求后从 API 收到的 PDF。 当用户打开 ShowPDF.asp 请求时,会打开一个新的 window 下载 PDF 的地方。

问题是下载的PDF无效;它说无法打开该文件。该文件的大小约为 500kb,因此其中包含一些内容。 当我在 Postman 中发出相同的请求时,我会在结果屏幕中看到 PDF 文件的内容,当我保存它时,它也大约为 500kb。

从请求中返回的是PDF文件的实际内容:

%PDF-1.4
3 0 obj
<</Type /Page
/Parent 1 0 R

代码:

PDF.asp

Response.AddHeader "Content-Disposition","attachment; filename=name.pdf
Response.ContentType = "application/pdf"    

PDFcontent = GetPDF(strToken) 
response.write PDFcontent

GetPDF(sToken)

public function GetPDF(sToken)
    Set xmlhttp = CreateObject("Msxml2.ServerXMLHTTP.6.0")
    xmlhttp.open "GET", "www.fakeUrl.com/rest/download", false
    xmlhttp.setRequestHeader "Authorization", "Bearer "& sToken         
    xmlhttp.setRequestHeader "Content-Type", "application/json; charset=UTF-8" 
    xmlhttp.send ""
    GetPDF = xmlhttp.responseText
end function

ShowPDF.asp

window.open('PDF.asp');

我在这里错过了什么?

问题是您将二进制文件的下载视为文本文件。但幸运的是,修复并不难。

调整

GetPDF = xmlhttp.responseText

GetPDF = xmlhttp.responseBody

然后改变

response.write PDFcontent

Response.BinaryWrite PDFcontent

有用的链接

  • Answer to: How to show a byte stream response