【发布时间】:2016-03-27 22:42:51
【问题描述】:
我正在努力了解如何最好地将文件流式传输到 Amazon S3。我想点击一个 Twilio 端点,获取位于那里的 mp3 录音,将它通过我的 Node 应用程序传递到 Amazon S3。
我查看了几个 npm streaming/s3 库,但我找不到一个很好的例子来说明如何将文件的 GET 请求合并到进程中。
下面的函数将捕获 mp3 文件并将其保存在我的服务器上并将文件上传到 Amazon S3。该文件在我的服务器上是正确的,但 Amazon S3 版本似乎是空的(20kb)并且在下载时无法播放。
我认为这一切都错了。 AWS S3 sdk 暗示这可以在没有额外库的情况下完成。提前感谢您的帮助。
我在这里使用 Node、npm 请求和 aws skd。
var request = require('request');
var fs = require('fs');
var AWS = require('aws-sdk');
module.exports = {
postFile : function(req,res){
var s3 = new AWS.S3();
request
.get('http://theTwilioRecordingUrl.mp3')
.on('error', function(err) {
console.log("ERROR");
})
.pipe(fs.createWriteStream("mydownloadedFile.mp3"));
s3.upload({
Bucket: 'bucketname',
Key: 'myuploadedfilename.mp3',
Body:"mydownloadedFile.mp3"}, function(err,data){
if(err){
console.log("AMAZON UPLOAD ERROR", err);
} else {
console.log("AMAZON UPLOAD SUCCESS",data);
}
});
res.status(200).end();
}
}
【问题讨论】:
标签: node.js amazon-web-services amazon-s3 twilio