操作场景
数据在客户端和服务器间传输时可能会出现错误,可以在上传文件时携带文件的Content-MD5值。服务端会在接收文件时,将接收到的数据MD5校验值与用户设置的MD5校验值进行比对,两者一致时才可以上传成功,从而保证上传数据的一致性。
校验上传对象的一致性
- 计算MD5加密的二进制数组并记录。
- 上传对象时,设置请求消息参数Content-MD5为本地计算得出的校验值,消息参考如下:
PUT /{Bucket}/{Key} HTTP/1.1 Host: xxx-对象存储.ctyun.cn X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 X-Amz-Date: 20220406T134209Z Authorization: authorization string Content-MD5: ContentMD5 Body
- 进行对象MD5校验。
服务端收到上传请求后,自动进行对象MD5校验,当校验一致时上传成功,否则上传失败。
校验下载对象的一致性
- 上传对象时,通过自定义元数据的方式记录该对象的元数据信息。需在请求参数中携带如下字段标识。
x-amz-meta-<…>: MD5
- 下载数据后,从下载响应消息中获取自定义的元数据MD5信息。再重新计算对象的校验值,与该自定义元数据进行比较,验证下载对象和原对象是否一致。