2016-05-04 98 views
1

我目前正在Node.js中進行AWS調用。該調用返回一個緩衝區。使用Node.js中其他緩衝區的一部分創建新緩衝區

var aws = new AWS.S3(); 
    var params = { 
     Bucket: s3config.bucket, 
     Key: s3config.tile_directory + filepath //, 
//  Range: 'bytes=0-' + (this.HEADER_SIZE - 1) 
    }; 

    var ts = this; 
    aws.getObject(params, function(err, data){ 
     var buff = data.Body; 
    } 

我想創建一個新的緩衝,這將是,如果我使用的range: PARAM被註釋掉的等價物。所以我希望緩衝區的位0-ts.HEADER_SIZE,這樣我就不必以不同的範圍進行三次不同的AWS調用。

我想:

var newBuff = new Buffer(data.Body, 0, ts.HEADER_SIZE - 1); 

但它似乎只是給我回來,我開始用相同的緩衝。有任何想法嗎?

回答

0

您需要做的第一件事是創建一個大小爲ts.HEADER_SIZE的新緩衝區。

var newBuff = new Buffer(ts.HEADER_SIZE) 

然後,您可以將較大的緩衝區的部分複製到此新的緩衝區。

data.Body.copy(newBuff, 0, 0, ts.HEADER_SIZE - 1); 

newBuff的值現在將成爲您想要的子集。