1

boto/s3モジュールには、パラメーターとして md5 ハッシュを使用するように見える関数が呼び出されset_contents_from_filenameています。

しかし、ドキュメントはハッシュをいつ/どのように計算するかについて明確ではありません。誰かがこれで私を助けてくれますか? また、ハッシュ情報をファイルに保存するにはどうすればよいですか?

4

3 に答える 3

3

@garnatt が既に述べたように、このset_contents_from_filenameメソッドは MD5 チェックサムを自動的に計算します。

ドキュメントを見るとcompute_md5、MD5 チェックサムを含むタプルを 16 進ダイジェスト (を使用してコンソールで取得したものmd5sum) と、ヘッダーに表示されている Amazon に送信する base64 エンコードを含むタプルを返すというメソッドがあります。

メソッドのmd5パラメーターはset_contents_from_filename、MD5 チェックサムをタプル形式で受け取り、同じ方法でcompute_md5戻ります。手動で計算する必要がある場合は、メソッドを使用するのが最善のcompute_md5方法です。それ以外の場合は、md5パラメーターに渡す前に正しい形式でタプルを作成する必要があります。

于 2013-02-27T18:01:54.680 に答える
3

このset_contents_from_filenameメソッドは、MD5 チェックサムを自動的に計算します。このメソッドにはオプションのmd5パラメーターがあり、アプリケーションで何らかの理由で既に MD5 を計算している場合は MD5 を渡すことができますが、値を渡さない場合は boto が計算します。

于 2013-01-18T12:26:00.423 に答える
1

boto による MD5 計算は、チェックサムの base 64 エンコードです。アップロードする/アップロード済みの特定のファイルのヘッダーの「Content-MD5」は、次のように計算できます。

import hashlib, base64
conn = S3Connection(access_key, secret_key)
bucket = conn.get_bucket('bucket_name')
#If you want to calculate MD5 of a file already uploaded
obj_key = bucket.get_key('file_name_in_s3')
content = obj_key.get_contents_as_string()
m = hashlib.md5()
m.update(content)
value = m.digest()
remote_md5 = base64.b64encode(value)

#To calculate md5 of a file to be uploaded to S3
cur_md5 = base64.b64encode(hashlib.md5(open('Local/Path/To/File').read()).digest())
于 2014-10-17T13:25:07.943 に答える