开发者社区> 问答> 正文

[PHP-SDK]使用multiuploadFile分片上传, 对象content md5为空

使用场景

  1. WEB直传
  2. APP经过服务器中转上传到OSS,(APP每上传“一部分”内容,服务器直接通过uploadPart上传到OSS)
    这两种方式服务器均无法取得整个文件的Content-MD5,因为服务器在上传完成前,无法得知文件的整个内容)。

文件使用multiuploadFile分片上传,当文件大小超过 OssUtil::OSS_MID_PART_SIZE或者设置分片大小,进行上传, 完成上传后, 使用getObjectMeta, etag出现带编号的字符,类似""DBBCA06B72052598E18B038678236B8B-5"",
Content-MD5值为空不存在。

错误似乎发生:completeMultipartUpload
对象的ETag变成了这个请求中XML加密算法后生成的ETag。
这里似乎缺少一步,即设置整个文件对象的ETag以及Content-MD5。

https://help.aliyun.com/document_detail/31995.html?spm=5176.doc31947.6.882.HiU2Cu 在这个链接中返回示例中返回也是类似的ETag。

但是如果按照这个逻辑,整个OSS通过分片上传产生的ETag以及Content-MD5都会有问题,那其它用户是如何取得正确的Content-MD5的?

对WEB端JS直传进行测试,如果进行分片上传,该对象的ETag及Content-MD5同样会使用最后一片上传内容的ETag和Content-MD5。

那如果假定所有的Content-MD5不可用,如何使用SDK取得某一个对象的正确的Content-MD5值?

展开
收起
老小孩儿 2017-01-04 09:49:08 4355 0
1 条回答
写回答
取消 提交回答
  • 为什么没人回复呢!?

    2019-07-17 20:39:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载