2015-12-21 91 views
0

我很想理解如何最好地将文件流式传输到Amazon S3。我想打一个Twilio端点,获取位于那里的mp3录音,通过我的Node应用程序传递给Amazon S3。如何将Twilio音频录制文件移动到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(); 
    } 
} 

回答

0

Twilio做额外的处理,并且每个请求,recording,所以我们不能公开S3网址提供。从Twilio的Url获取本地副本并保存到S3是将录制内容转移到自己的存储区的最佳方式。