在Node.js中打开AWS调用的头
Unpack header from AWS call in Node.js
我有一个完全可用的PHP项目。我正试图在Node.js中实现与该项目等效的功能。该项目依赖于从AWS中提取数据,然后从该数据中拆包一个标头。在PHP中,这是通过以下操作完成的:
$request = @self::$s3->getObject(self::$bucket, self::$filepath,false,0, self::HeaderSize+ 5 * self::ResolutionEntrySize + self::TileCountSize + 256 * self::TileEntrySize);
// Open the PAR file.
if( is_object($request) && ($request->code < 400)) {
self::$modifiedTime = $request->headers['time'];
// Read and unpack the header.
self::$header = unpack('I*', substr($request->body, 0, self::HeaderSize));
self::$resolutionEntry = substr($request->body, self::HeaderSize, self::ResolutionEntrySize);
self::$resolutionTable = substr($request->body, self::HeaderSize + 5 * self::ResolutionEntrySize, self::TileCountSize + 256 * self::TileEntrySize);
}
我不确定如何在Node.js中执行相同的操作。我尝试了以下操作:
aws.getObject(params, function(err, data){
if(err == null){
var objectData = data.Body.toString('utf-8');
var sub = objectData.substring(0, 28);
var header = bufferpack.unpack('I*', sub);
}
});
在PHP中,header
返回为一个数字数组,但在Node中,它表示它是null
。我知道AWS调用正在工作,因为data
返回如下:
{
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 ... > }
我是否错误地使用了Bufferpack?
是的,Bufferpack使用不正确。Bufferpack接受一个缓冲区,而不是字符串,所以不应该传入sub
,而应该传入data.Body
。此外,*
表示法无法识别,因此请使用所需的字节数,例如
var header = bufferpack.unpack('7I', data.Body);
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 为什么使用AWS Signature v4对S3的REST调用并没有真正使用签名过程
- 在Node.js中打开AWS调用的头
- AWS Lambda调用函数没有'不要总是回来
- AWS:调用getCredentialsForIdentity()时出错
- AWS Lambda 无法调用 Cognito Identity - IAM 角色
- Amazon AWS listObjects 调用错误
- Node.js AWS S3上传从不调用结束函数
- AWS Lambda调用函数(js sdk): timeout重置为默认值