2013-01-31 96 views
4

我正尝试使用AWS节点SDK将音频块文件上传/下载到S3。我已经尝试了base64方法,它工作正常。但是我无法获取我已经作为上传参数的一部分捆绑在一起的元数据。如何从nodejs aws s3获取元数据getObject回调数据?

下面是上传的代码片段与元信息一起:

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);    
    }   
}); 

这是用于下载该文件的片段。元数据不是回调数据的一部分。 我试图打印回调“数据”来安慰,发现只有以下PARAMS可用 上次更改时间,则contentType,的ContentLength,ETag的,身体,将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

任何帮助表示赞赏。

回答

0

您的metaInfo值是一个字符串吗?

引用的sdk api docsMetadata是一个字符串映射(ALA〜Metadata: {metaInfo: "myMetaInfoString"},我已经使用字符串作为metaInfo值测试你的代码,它并下data.Metadata.metaInfo参考返回正确。