Как обработать C# ByteArrayContent в NodeJS - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть простой C# сервис веб-API, который возвращает pdf-документ в виде байтового содержимого в ответе IHttpActionResult. Я могу легко обработать это как блоб на клиенте (js в браузере) и установить его как sr c для iframe. Все отображается правильно.

Из-за некоторых изменений в требованиях я сейчас реализую простой сервер приложений в nodejs с использованием express; это будет служить прокси-сервером. С моего клиента я могу позвонить на этот сервер express, который, в свою очередь, вызывает мою службу C#. Я получаю 200 http код состояния OK, но, похоже, не могу обработать pdf-байтовый массив в узле. Я пробовал методы Buffer, readstreams и др. c ... Ничего не помогло.

Не могли бы вы, ребята, пролить свет на это? Ниже приведен код: -

httpRequester.get(`${constants.serviceTarget}/api/DocGen/Download/Id/true`, (error, response, body) => {
            if(error) {
                console.log(error)
            } else {
                console.log(Buffer.isBuffer(body)) // this is always false
                const stream = streamifier.createReadStream(response.body)
                console.log("Created stream")
                res.setHeader("Access-Control-Allow-Origin", "*")
                res.setHeader("Content-Type", "application/pdf");
                res.setHeader("Content-Disposition", "inline; filename=document.pdf");
                res.writeHead(response.statusCode)
                stream.pipe(res)                
                console.log("Sent stream to response")
                console.log("***********************************")
            }
        })

1 Ответ

0 голосов
/ 12 февраля 2020

Оказывается, я слишком много здесь делал. Так как я использую модуль запроса nodejs для вызова GET, все, что мне нужно сделать, это передать ответ клиенту; как ниже: -

httpRequester.get(`${constants.serviceTarget}/api/Pandadoc/DownloadDocument/${opportunityId}/true`, (error, response, body) => {
            if(error) {
                console.log(error)
            }
        }).pipe(res)

Я получил идею от: https://github.com/expressjs/express/issues/2910

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...