javascript - 将 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 参数有问题
解决方案
您直接从 HTTP 响应对象中获取request
并尝试将其作为文件上传。
相反,您应该使用响应正文二进制文件并上传它。使用request
回调的第三个参数function (err, response, body)
(Buffer
Blob
ReadableStream
推荐阅读
- python - Generators, yield, send python
- r - 从R中的日期中提取年份和月份
- javascript - 安装扩展后找不到模块
- javascript - 在一个请求中禁用 aaplication/json
- php - 如何在php echo的特定部分使用链接(href)?
- javascript - Highcharts 系列,链接到多个系列
- elixir - 无法在 Phoenix / Ecto 中使用 belongs_to 关联播种
- python-2.7 - 从networkx图中提取边缘数据
- python-3.x - 如何在熊猫数据框中的滚动窗口内找到平均差异?
- python - cross_val_score 返回的分数与我的交叉验证分数的自定义实现之间的差异?