tencentyun / qcloud-sdk-ios

腾讯云服务iOS终端SDK
http://qcloud.com
35 stars 25 forks source link

上传过程中MD5校验与本地不一致,返回的etag长度超过32 #11

Closed zxjay closed 5 years ago

zxjay commented 5 years ago

为了帮助我们更好的解决您的问题,请您先回答下面的几个问题。

上传文件,需要分片时,会出现下面的错误。 当前网络环境为2 请求失败Error Domain=com.tencent.qcloud.networking Code=20004 "DataIntegrityError分片:上传过程中MD5校验与本地不一致,请检查本地文件在上传过程中是否发生了变化,建议调用删除接口将COS上的文件删除并重新上传,本地计算的 MD5 值:90d440f5e95ecc71f804749b4425ef67, 返回的 ETag值:8ad46ffa98077830d165a747f742e74f08a02ab3, Request id:NWM2NTRlMDJfZGEyOTVkNjRfNzMzMF85ZjJmNWM=" UserInfo={NSLocalizedDescription=DataIntegrityError分片:上传过程中MD5校验与本地不一致,请检查本地文件在上传过程中是否发生了变化,建议调用删除接口将COS上的文件删除并重新上传,本地计算的 MD5 值:90d440f5e95ecc71f804749b4425ef67, 返回的 ETag值:8ad46ffa98077830d165a747f742e74f08a02ab3, Request

15809284891 commented 5 years ago

您好,这边排查到的情况如下: 原因:

  1. 如果开了白名单cos上存的就是sha。没开存的就是md5。
  2. 但是SDK在一个分片上传完成之后,是计算出一个MD5与服务器返回的etag进行比对,不一致会出现这个原因,由于您开启了白名单,所以报错了。 解决:可以通过将QCloudCOSXMLUploadRequest的enableMD5Verification 的属性设置为NO,将其关闭。