我正在编写单页面web应用程序(angularJs)和服务器后端(node.js)。它们之间的通信是通过REST完成的。
目前我正在尝试实施以下方案:
将大文件从浏览器上传到S3公共存储桶。
将上传的文件复制到S3上的私人存储区
将上传的文件转码为HTML 5兼容格式(AWS Elastic Transcoder)
将有关文件的元对象存储在DB中以便稍后访问
我绞尽脑汁想要在服务器和客户端之间进行良好的通信/数据工作流程设计,但总是遇到以下问题?
在流程的结尾或开头存储文件元对象。如果它在开头,我必须存储和处理一些状态信息?
谁应该开始将上传的文件复制到私人存储桶。服务器或客户端?如果是服务器,客户端如何获得有关作业成功的通知?
谁开始转码过程?如果是服务器,客户端如何获得有关作业成功的通知?
你会怎么做?
答案 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 /等中生成“资产”的时间点。