将MP3文件上传到AWS s3

时间:2019-08-02 02:11:06

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

我正在尝试从rss提要中下载MP3,然后将其上传到S3存储桶-我非常确信XML可以正确解析并且文件正在下载。我认为问题出在上传部分。任何人都对为什么它不起作用有任何见解?

多次尝试调试问题所在-还对AWS权限进行了三重检查-我的IAM帐户具有对S3的完全管理员权限

let parser = new Parser();
const fs = require('fs');
var request = require('request');

var AWS = require('aws-sdk');
var s3 = new AWS.S3();

parser.parseURL('https://bridgetown.podbean.com/feed.xml', (err, feed) =>
  request(feed.items[0].enclosure.url, function (err, response){
    uploadFileToS3(response, feed.items[0].title + '.mp3')
   }));

const uploadFileToS3 = (file, fileName, callback) => {
    s3.upload({ Bucket: bucketName, Key: fileName, Body: file }, (err, data) => {
        if (err) {
            console.log(err)
          } else {
            console.log("Successfully uploaded data to " + bucketName );
            callback(data);
          }
  });

}

所以我在console.log中什么也没得到-所以让我认为body:文件参数有问题

1 个答案:

答案 0 :(得分:0)

您正在直接从request获取HTTP响应对象,并尝试将其作为文件上传。

您应该改为使用响应正文二进制文件并将其上传。使用request回调(function (err, response, body))的第三个参数,或者自己从响应对象解析主体,以防在获取正确数据类型的响应时遇到麻烦(可能是{{ 1}},BufferBlob)。