2011-12-23 89 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