Node.jsプロジェクトで、S3からデータを取得しようとしています。Node.jsのS3 getObjectからの応答を取得する方法は?
私はgetSignedURL
を使用すると、すべての作品:
aws.getSignedUrl('getObject', params, function(err, url){
console.log(url);
});
私のparamsは、次のとおりです。
var params = {
Bucket: "test-aws-imagery",
Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
私は、コンソールへのURLの出力を取得し、Webブラウザに貼り付けた場合は、それがダウンロード私が必要とするファイル。
しかし、私がgetObject
を使用しようとすると、私はあらゆる種類の奇妙な動作をします。私はちょうどそれを間違って使っていると信じています。
aws.getObject(params, function(err, data){
console.log(data);
console.log(err);
});
出力::
{
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
をだから、これは正常に動作していることが表示されますこれは私が試したものです。しかし、私がconsole.log
のいずれかにブレークポイントを設定すると、IDE(NetBeans)がエラーをスローし、データの値を表示することを拒否します。これはIDEでもかまいませんが、別の方法でgetObject
を試してみることにしました。
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
これは何も出力しません。コードがconsole.log
のいずれにも到達しないことを示すブレークポイントを設定する。私も試してみました:しかし、これもない
aws.getObject(params).on('success', function(data){
console.log(data);
});
何も出力し、ブレークポイントを置くことがconsole.log
に達することはありませんされていることを示しています。
私は間違っていますか?
あなたの 'aws'オブジェクトは実際に' aws.S3'オブジェクトの新しいインスタンスですか?また、 'getObject()'からの応答がHTTPレスポンスに返されるのか、それともファイルにパイプされていますか? – peteb
@peteb 'aws = new AWS.S3()'応答はファイルにパイプされるべきではありません。私はJavascriptでそれを使用する必要があります –
それで、内容がJSONかXMLであると仮定するのは安全でしょうか? – peteb