2011-12-23 133 views
13

我尝试验证上传到存储桶的文件的完整性,但没有找到任何有关此信息的信息。Amazon S3&Checksum

在文件的标题中有一个“E-tag”,但我认为它不是md5校验和。

那么,如何检查我上传到Amazon S3上的文件是否与我在计算机上的文件相同?

谢谢。 :)

+0

在http://stackoverflow.com/questions/1775816/how-to-get-the-md5sum-of-a-file-on-amazons-s3中有很多内容,尽管@ svetianov的答案看起来更完整一些。 – 2012-06-07 20:04:29

回答

22

如果你是在一个单一的操作使用REST API上传对象(高达5GB),那么你就可以在你的PUT请求添加内容-MD5头。根据用于PUT的S3文档,内容-MD5报头是:

base64编码128位MD5消息(无头)的摘要根据RFC 1864此头可被用作消息完整性检查以验证数据是最初发送的相同数据。虽然它是可选的,但我们建议使用Content-MD5机制作为端到端的完整性检查。

检查this answer关于如何计算base64编码的128位MD5摘要。如果您使用的是s3curl,则可以使用--contentMd5选项将计算的摘要包含在请求标题中。

如果MD5摘要亚马逊上传完成后计算的不匹配MD5摘要你在Content-MD5头提供,亚马逊将与BadDigest错误代码响应。

如果您使用的是分段上传,Content-MD5头将作为每个部分的完整性检查。分段上传完成后,亚马逊目前不提供验证组合文件完整性的方法。

+0

谢谢! :) – Florent 2012-01-09 09:35:12

+0

我开发了一个iPhone应用程序上传视频到亚马逊,我编码的文件进入base64编码的128位MD5,文件上传完成后,我收到“ErrorCode:BadDigest,消息:您指定的Content-MD5不匹配我们收到了。”这是否意味着我不能与我的pohone和s3服务器匹配md5值? – 2015-04-27 09:26:56