【问题标题】:Uploading MP3 file to Amazon S3将 MP3 文件上传到 Amazon S3
【发布时间】:2019-12-10 15:28:46
【问题描述】:

我正在尝试从 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 parameter 有问题

【问题讨论】:

  • 忘记输入我的代码 - 我确实定义了 bucketName

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


【解决方案1】:

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

您应该改为使用 response body 二进制文件并上传它。使用 request 回调的第三个参数 (function (err, response, body)) 或自己从响应对象中解析主体,以防您无法以正确的数据类型获取响应(应该是 Buffer、@987654325 @ 或 ReadableStream 在这种情况下)。

【讨论】:

  • 谢谢!这是有道理的,我在阅读 SDK 文档后想上传二进制对象 - 我将在今晚晚些时候尝试,看看这对我有什么作用!
猜你喜欢
  • 1970-01-01
  • 2013-09-09
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 2011-07-21
  • 2014-05-01
  • 2018-10-09
相关资源
最近更新 更多