如何从nodejs aws s3 getObject回调数据中检索元数据?

时间:2013-01-31 15:52:13

标签: javascript node.js amazon-web-services amazon-s3

我正在尝试使用AWS节点SDK将音频块文件上传/下载到S3。我尝试过base64方法,它工作正常。但是我无法将元数据作为upload params的一部分捆绑回来。

以下是上传的代码段以及元信息:

var myMetaInfo = "AdditionalInfo", dataToUpload = {Bucket: bucketName, Key:storageFolderFullPath , Body: myAudioFile.toString('base64'), Metadata: {metaInfo: myMetaInfo}};
s3.client.putObject(dataToUpload, function(err, data) {
    if (!err) {
        console.log("Successfully uploaded the file to ::" + dataToUpload.Bucket);            
    } else {
        console.log(" **** ERROR while uploading ::"+err);            
    }        
}); 

这是下载文件的片段。元数据不是回调数据的一部分。     我尝试将回调'数据'打印到控制台,并注意到只有以下参数可用     LastModified,ContentType,ContentLength,ETag,Body,RequestId

var dataToDownload = {Bucket: bucketName, Key: storageFolderFullPath}, originalFile, myMetaInfo;
s3.client.getObject(dataToDownload, function(err, data) {
    if (!err) {            
        originalFile = new Buffer(data.Body, 'base64');
        myMetaInfo = data.Metadata.metaInfo;
        console.log(" Meta info:: " + myMetaInfo);
        fs.writeFile(fileStoragePath, originalFile, function(err) {
            if (!err) {
                console.log(" File written!! ");
            } else {
                console.log(" Error while writing the file !!" + err);
            }
        });
    } else {
        console.log(" **** ERROR while downloading ::"+err);            
    }
});

关于我的实现有什么问题的任何指示?我已按照提到的here

文档进行操作

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您的metaInfo值是否为字符串?

引用sdk api docsMetadata是一个字符串映射(ala~ Metadata: {metaInfo: "myMetaInfoString"}。我使用字符串作为metaInfo的值测试了您的代码,它确实在data.Metadata.metaInfo引用下正确返回。