基于浏览器的文件上传到AWS S3并对服务器 - 客户端工作流进行编码

时间:2015-05-09 04:55:57

标签: angularjs amazon-web-services amazon-s3 client-server communication

我正在编写单页面web应用程序(angularJs)和服务器后端(node.js)。它们之间的通信是通过REST完成的。

目前我正在尝试实施以下方案:

  1. 将大文件从浏览器上传到S3公共存储桶。

  2. 将上传的文件复制到S3上的私人存储区

  3. 将上传的文件转码为HTML 5兼容格式(AWS Elastic Transcoder)

  4. 将有关文件的元对象存储在DB中以便稍后访问

  5. 我绞尽脑汁想要在服务器和客户端之间进行良好的通信/数据工作流程设计,但总是遇到以下问题?

    • 在流程的结尾或开头存储文件元对象。如果它在开头,我必须存储和处理一些状态信息?

    • 谁应该开始将上传的文件复制到私人存储桶。服务器或客户端?如果是服务器,客户端如何获得有关作业成功的通知?

    • 谁开始转码过程?如果是服务器,客户端如何获得有关作业成功的通知?

    你会怎么做?

1 个答案:

答案 0 :(得分:1)

有一个非常好的教程,描述了您计划实施的用例:http://www.bitcodin.com/blog/2015/02/create-mpeg-dash-hls-content-for-amazon-s3-and-cloudfront/

如果您的转码系统有RESTfull API(如本教程中使用的bitcodin或任何其他服务),您也可以在客户端执行您的应用程序,并使用API​​调用来获取转码的状态等。但是,使用API​​也可以在服务器端执行相同的操作,无论哪种方式更适合您。

我个人会在流程开始时存储元数据信息,因为这是您在数据库/ CMS /等中生成“资产”的时间点。