我正在尝试使用AWS节点SDK上传/下载音频块文件到S3或从S3下载.我尝试过base64方法,它工作正常.但我无法获得我已捆绑的元数据作为上传参数的一部分.
以下是上传的代码段以及元信息:
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提到的文档
任何帮助表示赞赏.
解决方法:
你的metaInfo值是一个字符串吗?
引用sdk api docs,Metadata是一个字符串映射(ala~Metadata:{metaInfo:“myMetaInfoString”}.我已经使用字符串作为metaInfo的值测试了您的代码,它确实在data.Metadata.metaInfo参考下正确返回.
标签:javascript,node-js,amazon-web-services,amazon-s3
来源: https://codeday.me/bug/20191006/1862931.html