4

AWS ノード SDK を使用して、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);            
    }
});

私の実装の何が問題なのかについての指針はありますか? ここに記載されているドキュメントに従いました

どんな助けでも大歓迎です。

4

1 に答える 1

1

あなたのmetaInfo値は文字列ですか?

sdk api docsの参照Metadataは、文字列マップ (ala ~Metadata: {metaInfo: "myMetaInfoString"}です。文字列を値として使用してコードをテストしましたmetaInfoが、参照の下で正しく返されdata.Metadata.metaInfoます。

于 2014-05-13T22:57:18.023 に答える