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



我对 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之外,它真的没有做太多事情。

那么我该何去何从呢?有人可以帮助我完成此代码,以便我可以将文件从 HTTP GET 流式传输到 S3 上的存储桶吗?

一旦你进入这个回调:

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

来自谷歌的响应已经流式传输到 S3(这就是 knox 的putStream为您所做的),err, res是 S3 的响应,所以你在这里除了检查错误和类似的东西之外,不需要任何其他事情console.log("Upload done")如果这是一个命令行片段。他们的文档在这里说,如果整个片段是在浏览器和节点.js Web 应用程序之间的 HTTP req/res 交互上下文中,那么您可以决定要将图像也管道回浏览器,您可以这样做(至少在理论上)。我认为文档对此有点混乱,但这是我的解释。

最新更新