近期对视频上传进行了相关优化,由原本的上传到后端服务器改为前端直传 all-oss。
出现的问题
阿里云提供了 ali-oss sdk,前端可以很方便的进行直传工作。
但实际使用中也出现了一些问题
取消分片上传
ali-oss 文档中仅提供了 abortMultipartUpload 来进行取消分片上传。
该方法有几个问题前端获取到的 access_token 有效期有一个小时,后端不希望暴露给前端 bucket 的删除权限
abortMultipartUpload 方法调用后会删除已有的上传碎片,后续无法做断点续传功能。
在源码中看到在 proto 挂了一个 cancel 方法,可以直接调用https://github.com/ali-sdk/ali-oss/blob/c87f6dab60de065e94e522fdc3bc0b27b94135e4/lib/common/thunkpool.js#L87github.com
另外在 readme 里找到了这样的一段话
//the other event to cancel, for example: click event//to cancel upload must use the same client instancestore.cancel();
OSS 实际上提示提供了一个 cancel 方法,但并没有很好的在文档中说明
关于此问题讨论在此:https://github.com/ali-sdk/ali-oss/issues/384github.com
Cannot read property 'crypto' of undefined
ali-oss sdk 的包大约在 500kb 左右,