Node.js 如何在NodeJS中处理C#ByteArray内容

Node.js 如何在NodeJS中处理C#ByteArray内容,node.js,express,Node.js,Express,我有一个简单的C#web api服务,它在IHTTPacationResult的响应中返回一个pdf文档作为bytearraycontent。我可以在客户端(浏览器中的js)上轻松地将其作为blob处理,并将其设置为iframe的src。一切都显示正确 由于需求的一些变化,我现在使用express在nodejs中实现一个简单的appserver;这将用作代理服务器。从我的客户机,我可以调用这个express服务器,它反过来调用我的C#服务。我得到了200个http OK状态代码,但似乎无法处理节

我有一个简单的C#web api服务,它在IHTTPacationResult的响应中返回一个pdf文档作为bytearraycontent。我可以在客户端(浏览器中的js)上轻松地将其作为blob处理,并将其设置为iframe的src。一切都显示正确

由于需求的一些变化,我现在使用express在nodejs中实现一个简单的appserver;这将用作代理服务器。从我的客户机,我可以调用这个express服务器,它反过来调用我的C#服务。我得到了200个http OK状态代码,但似乎无法处理节点中的pdf字节数组。我尝试了缓冲区方法,读流等等。。。什么都没用

你们能解释一下吗?代码如下:-

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("***********************************")
            }
        })

原来我在这里做的太多了。因为我正在使用nodejs请求模块来进行GET调用,所以我需要做的就是将响应通过管道传递给客户端;如下图所示:-

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

我的想法来自:

此外,这里的代码运行良好-没有错误,但返回给客户端的pdf没有内容。为什么回调声明为异步,而内部没有等待调用?谢谢@tutiplain。作为我之前研究的一部分,我尝试了一些异步方法。不小心把它忘在那里了。现在清除了它现在能用了吗?如果您在console.log中记录body和response.body的值,您会得到什么?是的。请参阅下面的答案。这只适用于不需要额外标题的情况。在这里,您可以找到添加额外标题的解决方案:感谢您提供链接@inf3rno!现在,是的,我很好,没有改变传入的头,但将保持额外的见解手边。