在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 …