Javascript 保存来自s3的传入文件w/nodejs&;诺克斯?

Javascript 保存来自s3的传入文件w/nodejs&;诺克斯?,javascript,node.js,amazon-s3,serverside-javascript,Javascript,Node.js,Amazon S3,Serverside Javascript,这可能是非常基本的,因为文档忽略了它。。。从knox文档: “下面是我们刚才在s3中插入的文件的GET请求示例,它只输出响应状态代码、标题和正文。” 很简单,但是如何将传入的数据保存为本地文件?新建BufferList()还是什么 我正在尝试构建一个“动态”图像大小调整服务,该服务从s3或cloudfront加载图像,并根据请求返回图像大小。然后,浏览器缓存大小的图像,而不是直接从s3缓存完整的图像。当然,我需要这个基本的工作位第一!有什么想法吗 谢谢大家 看起来knox不支持stream AP

这可能是非常基本的,因为文档忽略了它。。。从knox文档:

“下面是我们刚才在s3中插入的文件的GET请求示例,它只输出响应状态代码、标题和正文。”

很简单,但是如何将传入的数据保存为本地文件?新建BufferList()还是什么

我正在尝试构建一个“动态”图像大小调整服务,该服务从s3或cloudfront加载图像,并根据请求返回图像大小。然后,浏览器缓存大小的图像,而不是直接从s3缓存完整的图像。当然,我需要这个基本的工作位第一!有什么想法吗


谢谢大家

看起来knox不支持stream API,因此无法使用stream.pipe()并获得适当的背压。然而,您的磁盘可能比S3快,所以这可能无关紧要


在“response”回调中,使用
var outstream=fs.createWriteStream(文件名)从文件系统模块打开一个可写流。在“数据”回调中,调用
outstream.write(chunk)
希望有一个“end”回调,您也可以使用close the write stream。

作为上述回答的替代方法,您可以将传入文件保存到缓冲区,如下所示:

var buffer = '';
client.get('/test/Readme.md').on('response', function(res){

  res.setEncoding('utf8');

  res.on('data', function(chunk){
    buffer += chunk;
  });

  res.on('end', function(){
    // do something with the buffer such as save it to file, 
    // or directly resize the image here.
    // eg. save to file:
    fs.writeFile('downloaded_readme.md', buffer, 'utf8', function (err) {
    });
  });

}).end();

在两个位置将“utf-8”设置为“二进制”对我来说都适用于图像。是的,询问缓冲区在内存中的寿命-只适用于“小”文件
var buffer = '';
client.get('/test/Readme.md').on('response', function(res){

  res.setEncoding('utf8');

  res.on('data', function(chunk){
    buffer += chunk;
  });

  res.on('end', function(){
    // do something with the buffer such as save it to file, 
    // or directly resize the image here.
    // eg. save to file:
    fs.writeFile('downloaded_readme.md', buffer, 'utf8', function (err) {
    });
  });

}).end();