如何使用Node.js将文件直接上传到Amazon Cloud Front

时间:2016-03-03 21:01:46

标签: node.js amazon-web-services amazon-s3 amazon-cloudfront

我刚刚配置了Amazon Cloud Front发行版,并将其连接到现有的Amazon S3存储桶。话虽如此,这个桶可容纳10GB到40GB的视频文件,我想使用CF来加快上传过程(也是下载,但在这种情况下上传更为重要)。

最后,我创建了一个简单的JS脚本来将文件推送到连接到CF的这个桶:

var AWS_ACCESS_KEY_ID = "111",
AWS_SECRET_ACCESS_KEY = "222",
S3_BUCKET = "videos.company.com",
S3_KEY = "remote_filename.mkv",
fs = require('fs'),
AWS = require('aws-sdk');

AWS.config.update({accessKeyId: AWS_ACCESS_KEY_ID, secretAccessKey: AWS_SECRET_ACCESS_KEY});

var startDate = new Date().toUTCString();

var fileStream = fs.createReadStream(__dirname + '/test.mkv');
fileStream.on('error', function (err) {
  if (err) { throw err; }
});  
fileStream.on('open', function () {
  var s3 = new AWS.S3();
  s3.putObject({
    Bucket: S3_BUCKET,
    Key: S3_KEY,
    Body: fileStream
  }, function(err) {
    if (err) {
      console.log(err, err.stack);
    } else {
      console.log('Uploaded file to ' + S3_KEY + ' at ' + new Date().toUTCString());
      console.log("Start time: " + startDate + ", end time: " + new Date().toUTCString());
    }
  }).on('httpUploadProgress', function(progress) {
    console.log('Upload', progress.loaded, 'of' , progress.total, 'bytes' + " --> " + ((progress.loaded*100)/progress.total).toFixed(2) + "%");
  });
});

运行脚本后,我没有注意到任何速度变化(上传有和没有CF分发)......实际上两种情况的上传时间完全相同。但是,在阅读了一些论坛之后,我看到有人在谈论使用CF网址发布POST请求。

如何直接将文件从我的服务器上传到CF?

谢谢!

0 个答案:

没有答案