2011-12-23 44 views
13

Tôi cố gắng xác minh tính toàn vẹn của tệp đã được tải lên một nhóm nhưng tôi không tìm thấy bất kỳ thông tin nào về điều này.Amazon S3 & Checksum

Trong tiêu đề của tệp, có "E-tag" nhưng tôi nghĩ nó không phải là md5 checksum.

Vì vậy, làm cách nào để kiểm tra xem tệp tôi đã tải lên trên Amazon S3 có giống với tệp tôi có trên máy tính của mình không?

Cảm ơn. :)

+0

Khá nhiều được đề cập trong http://stackoverflow.com/questions/1775816/how-to-get-the-md5sum-of-a-file-on-amazons-s3, mặc dù câu trả lời của @ svetianov trông hoàn chỉnh hơn một chút . –

Trả lời

22

Nếu bạn đang sử dụng REST API để tải lên một đối tượng (lên đến 5GB) trong một hoạt động đơn lẻ, sau đó bạn có thể thêm tiêu đề Content-MD5 trong PUT yêu cầu của bạn. Theo các tài liệu S3 cho PUT, header Content-MD5 là:

Các base64 mã hóa 128-bit MD5 tiêu hóa của thông điệp (không có tiêu đề) theo RFC 1864. Tiêu đề này có thể được sử dụng như kiểm tra tính toàn vẹn thông báo để xác minh rằng dữ liệu giống với dữ liệu ban đầu được gửi. Mặc dù nó là tùy chọn, chúng tôi khuyên bạn nên sử dụng cơ chế Content-MD5 làm kiểm tra tính toàn vẹn từ đầu đến cuối.

Kiểm tra this answer về cách tính toán tiêu chuẩn MD5 128 bit được mã hóa base64. Nếu bạn đang sử dụng s3curl, bạn có thể bao gồm thông báo được tính toán trong tiêu đề yêu cầu của mình bằng cách sử dụng tùy chọn --contentMd5.

Nếu thông báo md5 do Amazon tính toán khi hoàn thành tải lên không khớp với thông báo md5 bạn đã cung cấp trong tiêu đề Content-MD5, Amazon sẽ trả lời với mã lỗi BadDigest.

Nếu bạn đang sử dụng tải lên nhiều phần, tiêu đề Content-MD5 đóng vai trò kiểm tra tính toàn vẹn cho từng phần riêng lẻ. Khi quá trình tải lên đa phần được hoàn thành, Amazon hiện không cung cấp cách xác minh tính toàn vẹn của tệp được lắp ráp.

+0

Cảm ơn bạn! :) – Florent

+0

tôi đã phát triển một ứng dụng iphone để tải video lên amazon và tôi đã mã hóa tệp vào MD64 128 bit được mã hóa base64, khi tệp tải lên hoàn tất, tôi nhận được "ErrorCode: BadDigest, Message: Content-MD5 bạn chỉ định không khớp với chúng tôi đã nhận được." điều này có nghĩa là tôi không thể khớp các giá trị md5 với máy chủ pohone và s3 của tôi? –