首页 > 解决方案 > 将 MP3 文件上传到 Amazon S3

问题描述

我正在尝试从 rss 提要下载 MP3,然后上传到 Amazon 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: file 参数有问题

标签: javascriptnode.jsamazon-web-servicesamazon-s3

解决方案


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

相反,您应该使用响应正文二进制文件并上传它。使用request回调的第三个参数function (err, response, body)BufferBlobReadableStream


推荐阅读