七牛上传开发(三)使用NodeJS生成带数据处理的凭证

JavaScript019

七牛上传开发(三)使用NodeJS生成带数据处理的凭证,第1张

业务需求,产品希望通过后台接口上传视频后,能立即获取视频切片的地址。然后将地址插入到相关业务的表中。

但是七牛的视频处理(切片、转码等)是异步执行,那么如何才能直接获取到经过七牛视频处理后的资源地址呢?

在做七牛普通上传的 token 时,我们可以提前设定上传后的文件名(key)。当前端向后端获取token时,一并将资源地址和token返回前端。前端利用 token 进行文件直传到CDN,上传成功后,将已获得的资源地址进行相关业务处理(资源地址上报等)。

那么,可以不可以将类似的思路,复用到带数据处理的token生成中。

我们在生成token的时,将两种文件名(源资源文件名和经处理的资源名)信息保存到token中。前端在获取token时,提前获取到文件访问地址。

但是有一个问题,音视频处理是一个很耗时的操作,不像文件直传CDN进行保存,可以立即得到反馈。那么,如何确定视频处理成功呢?可以通过直传返回的 persistentId ,定期轮询「持久化处理状态查询接口」。来判断是否处理完毕。

文件能传成功,无法获取执行回调。

上传文件过程报错cannotreadpropertytotalofnull文件能传成功,无法获取执行回调,是由于vue-cli中的mockjs模块全局使用了MockXMLHttpRequest,而七牛sdk本身使用的是XMLHttpRequest按照标准来的,但是vue-cli中的mockjs模块硬是把XMLHttpRequest自己封装一下导致冲突,会导致对象属性访问不到,删除mockjs模块即可。

七牛云主机服务是围绕云主机为核心,推出的含云硬盘、数据库、高防、负载均衡等解决方案为一体的云计算综合服务。