2017-04-05 99 views
1

我想从s3桶下载视频文件并在我的angularjs应用程序中显示它。我正在尝试使用AWS Node.js,但无法做到这一点。请帮我Angularjs下载一个私人视频文件,并从s3桶播放

示例代码

var AWS = require('aws-sdk'); 
AWS.config.update(
    { 
    accessKeyId: ".. your key ..", 
    secretAccessKey: ".. your secret key ..", 
    } 
); 
var s3 = new AWS.S3(); 
s3.getObject(
    { Bucket: "my-bucket", Key: "path/to/videofile" }, 
    function (error, data) { 
    if (error != null) { 
     alert("Failed to retrieve an object: " + error); 
    } else { 
     alert("Loaded " + data.ContentLength + " bytes"); 
     // do something with data.Body 
    } 
    } 
); 

我能够得到的数据,但不知道如何表达,数据是一个对象

enter image description here

回答

0

得到我的答案,我需要身体元素,然后将其转换为base64编码数据。下面

var d = s3.getObject(params,function (error, data) { 
     if (error != null) { 
     console.log("Failed to retrieve an object: " + error); 
     } else { 
     console.log(data); 
     $scope.learningVideo = "data:video/mp4;base64," + encode(data.Body); 
     } 
    }) 

而对于编码方法的代码

function encode(data) 
    { 
    var str = data.reduce(function(a,b){ return a+String.fromCharCode(b) },''); 
    return btoa(str).replace(/.{76}(?=.)/g,'$&\n'); 
    } 
0

的数据你正在寻找因为将收到您收到的答复对象的Body

AWS SDK documentation,这是你所期望什么Body看到:

体 - (缓冲区,类型数组,BLOB,字符串,ReadableStream)对象数据。