但是七牛的视频处理(切片、转码等)是异步执行,那么如何才能直接获取到经过七牛视频处理后的资源地址呢?
在做七牛普通上传的 token 时,我们可以提前设定上传后的文件名(key)。当前端向后端获取token时,一并将资源地址和token返回前端。前端利用 token 进行文件直传到CDN,上传成功后,将已获得的资源地址进行相关业务处理(资源地址上报等)。
那么,可以不可以将类似的思路,复用到带数据处理的token生成中。
我们在生成token的时,将两种文件名(源资源文件名和经处理的资源名)信息保存到token中。前端在获取token时,提前获取到文件访问地址。
但是有一个问题,音视频处理是一个很耗时的操作,不像文件直传CDN进行保存,可以立即得到反馈。那么,如何确定视频处理成功呢?可以通过直传返回的 persistentId ,定期轮询「持久化处理状态查询接口」。来判断是否处理完毕。
文件能传成功,无法获取执行回调。上传文件过程报错cannotreadpropertytotalofnull文件能传成功,无法获取执行回调,是由于vue-cli中的mockjs模块全局使用了MockXMLHttpRequest,而七牛sdk本身使用的是XMLHttpRequest按照标准来的,但是vue-cli中的mockjs模块硬是把XMLHttpRequest自己封装一下导致冲突,会导致对象属性访问不到,删除mockjs模块即可。
七牛云主机服务是围绕云主机为核心,推出的含云硬盘、数据库、高防、负载均衡等解决方案为一体的云计算综合服务。