OSS的Etag与MD5

本文介绍了OSS如何使用ETag和Content-MD5校验文件上传的一致性,强调了ETag并非始终等于MD5,推荐使用Content-MD5确保数据完整。Get和PutObject操作中的ETag和MD5使用实例也在文中给出。
摘要由CSDN通过智能技术生成

OSS MD5一致性校验说明

OSS上的Object会有ETag标签,ETag主要是用来判断服务端数据是否存在变化。但是ETag不一定等同于文件的MD5值,所以不建议作为校验数据一致性的依据。

如果需要校验上传到OSS的文件和本地文件是否一致,可以在上传文件时携带文件的Content-MD5值。OSS会在接收文件时,将文件的MD5值和Content-MD5进行比对,两者一致时才可以上传成功,从而保证上传数据的一致性。

PutObject

Content-MD5:
用于检查消息内容是否与发送时一致。Content-MD5是由MD5算法生成的值。上传了Content-MD5请求头后,OSS会计算消息体的Content-MD5并检查一致性。更多信息,请参见Content-MD5的计算方法。
为确保数据完整性,OSS提供多种方式对数据的MD5值进行校验。 如果需要通过Content-MD5进行MD5验证,可将Content-MD5加入到请求头中。

ETag:
Object生成时会创建相应的ETag ,ETag用于标识一个Object的内容。
对于PutObject请求创建的Object,ETag值是其内容的MD5值。
对于其他方式创建的Object,ETag值是基于一定计算规则生成的唯一值,但不是其内容的MD5值。
注意:ETag值可以用于检查Object内容是否发生变化。不建议使用ETag作为Object内容的MD5来校验数据完整性。
使用PutObject上传文件 获取的ETag就是MD5值

GetObject

请求示例

GET /link-to-oss.jpg HTTP/1.1
Accept-Encoding: identity
Date: Tue, 08 Nov 2016 03:17:58 GMT
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Authorization: OSS qn6qrrqxok53otfjbyc:qZzjF3DUtd+yK16BdhGtFc*****

返回示例

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Tue, 08 Nov 2016 03:17:58 GMT
Content-Type: application/octet-stream
Content-Length: 20
Connection: keep-alive
x-oss-request-id: 582143E6A212AD*****
Accept-Ranges: bytes
ETag: "8086265EFC021F9A2F09BF4****"
Last-Modified: Tue, 08 Nov 2016 03:17:58 GMT
x-oss-object-type: Symlink
Content-MD5: gIYmXvwCEe0fmi8Jv0Y****

使用GetObject生成Etag与Content-MD5值不一致

总结:

通过PutObject拿到ETag可以和下载后的文件本地生成MD5进行对比,可以校验文件的完整性,此时ETag和MD5是一致的.GetObject建议使用MD5校验一致性

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值