如何使用Knox将文件从NodeJS流式传输到Amazon S3?

时间:2014-02-07 21:51:28

标签: node.js amazon-web-services amazon-s3 streaming knox-amazon-s3-client

我对NodeJS中的流非常陌生 - 基本上对它们一无所知 - 而且我试图让Amazon S3的KnoxJS客户端从HTTP GET流式传输文件。

Knox github页面上的示例代码显示了这一点:


http.get('http://google.com/doodle.png', function(res){
  var headers = {
      'Content-Length': res.headers['content-length']
    , 'Content-Type': res.headers['content-type']
  };
  client.putStream(res, '/doodle.png', headers, function(err, res){
    // check `err`, then do `res.pipe(..)` or `res.resume()` or whatever.
  });
});

但这显然是不完整的......除了为S3打开http.getputStream之外,它除了做任何其他事情之外并没有做什么。

那么我从哪里开始呢?有人可以帮我完成这段代码,以便我可以在S3上将文件从HTTP GET流式传输到我的存储桶吗?

1 个答案:

答案 0 :(得分:2)

进入此回调后:

//check `err`, then do `res.pipe(..)` or `res.resume()` or whatever

google的响应已经流式传输到S3(这是knox的putStream为你做的),而err, res是S3的响应,所以除了check之外你不需要其他任何东西错误和类似console.log("Upload done")的内容,如果这是命令行代码段。他们的文档在这里说如果整个片段是在浏览器和node.js web应用程序之间的HTTP req / res交互的上下文中,那么你可以决定你想将图像传回给浏览器,你可以这样做(至少在理论上)。我认为文档对此有点混乱,但这是我的解释。