经典 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
我想让用户下载在 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