Angularjs下载私人视频文件并从s3桶播放

时间:2017-04-05 11:52:48

标签: angularjs aws-sdk-js

我正在尝试从s3存储桶下载视频文件,并将其显示在我的angularjs应用中。我试图使用AWS Node.js但不能这样做。请帮帮我

示例代码

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

2 个答案:

答案 0 :(得分:0)

您要查找的数据将位于您收到的回复对象的Body中。

根据AWS SDK documentation,您可能希望在Body中看到这一点:

  

Body - (Buffer,Typed Array,Blob,String,ReadableStream)对象数据。

答案 1 :(得分:0)

得到了我的答案,我需要Body元素然后将其转换为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');
  }