一尘不染

Express-从远程Web服务返回二进制数据

node.js

我尝试使用Express返回一些二进制数据。在示例中,它是PDF,但从理论上讲,它可以是任何类型的文件。

但是暂时将重点放在pdf上。我写了这段代码:

app.get('*', function (req, res) {
    getBinaryData(req.url,
        function (answer) {
            res.type('pdf');
            res.end(new Buffer(answer, 'binary'));
        },
        function (error) {
            res.setHeader('Content-Type', 'text/plain');
            return res.end(error);
        }
    );
});

基于我在这里看到的内容:https :
//github.com/strongloop/express/issues/1555

但是,我得到的PDF文件具有正确的页数,正确的标题…。但是所有页面都是空白

我肯定会担心getBinaryData()的返回,因为此函数询问了外部Web服务,当我直接询问该服务时,我得到了正确的文档。

预先感谢您的回答


阅读 554

收藏
2020-07-07

共1个答案

一尘不染

我找到了一个更简单的解决方案:

request(req.url).pipe(res);

这会将来自远程Web服务的原始响应直接传递给我的响应!无论文件类型如何,我都能得到正确的文件。

2020-07-07