关键思想:
1:前端
1-1:先把本地文件永久化(先存在本地,大神们还有别的解决方法吗?),然后后端传过来的本地永久化后url地址,以下一直带着(此步可以用普通h5的formData分片上传到本地服务器,用js的onProgress来监视)
1-2:第二步是刚本地文件的第一片上传到oss上,json返回过来key,uploadId,以下也一直带着
1-3:第三次刷新(此时需要js定时刷新)传参:当前第几个分片,key,uploadId(oss 的key,这些一定要有的,要不然不知道是哪个了),都在以后带着,包括url地址
2:后端
把官方sdk里的分片上传拆分,前端定时刷新就只操作uploadPart,最后一步判断的时候再执行completeMultipartUpload,因为part是永久在的,所以就能间接实现分片
另:listMultipartUploads才弄明白怎么用
$options = array(
'delimiter' => '/',
'max-uploads' => 100,
'key-marker' => 'test_video/video/',//后面一定要有斜杠 ,找到此目录下的东西
'prefix' => 'test_video/video/',//后面一定要有斜杠 ,找到此目录下的东西
'upload-id-marker' => 'test_video/video/'//后面一定要有斜杠 ,找到此目录下的东西,和key-marker相互应
);
$list = $client->listMultipartUploads($bucket,$options);
$list->getUploads();//此时可以看到没成功上传的分片有哪些,没执行completeMultipartUpload或中断的
总体思想:前后端用json来回传值,后端把文件永久化了,地址一直带着,把分片那块的代码拆分
网友评论