使用ExpressJS或Node,是否有一种简单的方法可以将外部图像读入内存并提供服务?

时间:2013-08-02 21:11:04

标签: node.js express

我正在使用外部服务来创建图片。我希望我的用户能够点击我的API并询问图像。然后我的Express服务器将从外部服务检索它,然后将其提供给用户。我认为有点像代理,但不完全是。

有没有一种简单的方法可以做到这一点,最好不要将图像下载到硬盘驱动器,然后将其重新读入并提供给它?

使用请求库,我能够想出这个:

var request = require("request");

exports.relayImage = function(req, res){
    request(req.params.url).pipe(res);
}

这似乎有效。如果有更有效的方法(意味着服务器资源,而不是代码行),请说出来!

2 个答案:

答案 0 :(得分:2)

您正在做的正是您应该做的事情,并且是最有效的方法。使用管道,数据在进入时发送,不需要额外的资源来缓冲和传输。

还要注意您可能想要转发的内容类型和其他响应标头。最后,要意识到您已经有效地构建了一个开放代理,任何人都可以通过您的服务器请求任何他们想要的东这有点危险,所以请务必将其锁定在最终的应用程序中。

答案 1 :(得分:0)

您应该能够使用http模块通过回调向外部图像服务发出请求,该回调将图像作为响应返回。除非您明确告诉它,否则它不会写入磁盘。