В классическом ASP, Response.Write()
используется для передачи текстовых данных обратно в браузер, используя CodePage
и Charset
свойства, определенные на Response
объекта (по умолчанию это унаследованный от текущий сеанс и расширение конфигурации сервера IIS).
Чтобы отправить двоичные данные обратно в браузер, используйте Response.BinaryWrite()
.
Вот краткий пример (фрагмент, основанный на том, что у вас уже есть двоичный код от httpReq.ResponseBody
);
<%
Response.ContentType = "application/pdf"
'Make sure nothing in the Response buffer.
Call Response.Clear()
'Force the browser to display instead of bringing up the download dialog.
Call Response.AddHeader("Content-Disposition", "inline;filename=somepdf.pdf")
'Write binary from the xhr responses body.
Call Response.BinaryWrite(httpReq.ResponseBody)
%>
В идеале, при использовании REST API с помощью XHR (или любой URL по этому вопросу) вы должны быть проверяя httpReq.Status
, чтобы обрабатывать ошибки отдельно возвращения в двоичном, даже установить другой content-type, если есть ошибка.
Вы можете перестроить приведенный выше пример;
<%
'Make sure nothing in the Response buffer.
Call Response.Clear()
'Check we have a valid status returned from the XHR.
If httpReq.Status = 200 Then
Response.ContentType = "application/pdf"
'Force the browser to display instead of bringing up the download dialog.
Call Response.AddHeader("Content-Disposition", "inline;filename=somepdf.pdf")
'Write binary from the xhr responses body.
Call Response.BinaryWrite(httpReq.ResponseBody)
Else
'Set Content-Type to HTML and return a relevant error message.
Response.ContentType = "text/html"
'...
End If
%>
Это потому, что 'Response.Write()' пишет текст в текущей 'CodePage' обратно в браузер, если вы хотите отправить обратно двоичные данные, используйте 'Response.BinaryWrite()'. – Lankymart