相关疑难解决方法(0)

如何从Node.js中的S3 getObject获得响应?

在Node.js项目中,我试图从S3获取数据.

当我使用时getSignedURL,一切正常:

aws.getSignedUrl('getObject', params, function(err, url){
    console.log(url); 
}); 
Run Code Online (Sandbox Code Playgroud)

我的参数是:

var params = {
              Bucket: "test-aws-imagery", 
              Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
Run Code Online (Sandbox Code Playgroud)

如果我将URL输出带到控制台并将其粘贴到Web浏览器中,它会下载我需要的文件.

但是,如果我尝试使用,getObject我会得到各种奇怪的行为.我相信我只是错误地使用它.这就是我尝试过的:

aws.getObject(params, function(err, data){
    console.log(data); 
    console.log(err); 
}); 
Run Code Online (Sandbox Code Playgroud)

输出:

{ 
  AcceptRanges: 'bytes',
  LastModified: 'Wed, 06 Apr 2016 20:04:02 GMT',
  ContentLength: '1602862',
  ETag: '9826l1e5725fbd52l88ge3f5v0c123a4"',
  ContentType: 'application/octet-stream',
  Metadata: {},
  Body: <Buffer 01 00 00 00  ... > }

  null
Run Code Online (Sandbox Code Playgroud)

所以它似乎正常运作.但是,当我在其中一个console.logs 上放置断点时,我的IDE(NetBeans)会抛出错误并拒绝显示数据的值.虽然这可能只是IDE,但我决定尝试其他方式使用getObject.

aws.getObject(params).on('httpData', function(chunk){
    console.log(chunk); 
}).on('httpDone', function(data){
    console.log(data); 
});
Run Code Online (Sandbox Code Playgroud)

这不输出任何东西.在断点处显示代码永远不会到达任何一个console.logs.我也尝试过:

aws.getObject(params).on('success', function(data){
    console.log(data); 
});
Run Code Online (Sandbox Code Playgroud)

但是,这也没有输出任何东西,并且放置一个断点表明console.log …

javascript amazon-s3 node.js aws-sdk aws-sdk-nodejs

58
推荐指数
8
解决办法
9万
查看次数

标签 统计

amazon-s3 ×1

aws-sdk ×1

aws-sdk-nodejs ×1

javascript ×1

node.js ×1