Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何/何时使用Boto库计算s3上传的md5哈希_Python_Amazon S3_Boto - Fatal编程技术网

Python 如何/何时使用Boto库计算s3上传的md5哈希

Python 如何/何时使用Boto库计算s3上传的md5哈希,python,amazon-s3,boto,Python,Amazon S3,Boto,在模块中,有一个名为set\u contents\u from\u filename的函数,它似乎将md5哈希作为参数 但是文档中不清楚何时/如何计算散列。有人能帮我吗?另外,如何将哈希信息保存到文件中?从文件名设置内容方法将自动为您计算MD5校验和。此方法有一个可选的md5参数,如果您在应用程序中出于某种原因已经计算了md5,则可以传入md5,但如果您没有传入值,则boto将为您计算。从文件名设置内容\u方法将自动为您计算md5校验和。此方法有一个可选的md5参数,如果您在应用程序中出于某种原

在模块中,有一个名为
set\u contents\u from\u filename
的函数,它似乎将md5哈希作为参数


但是文档中不清楚何时/如何计算散列。有人能帮我吗?另外,如何将哈希信息保存到文件中?

从文件名设置内容方法将自动为您计算MD5校验和。此方法有一个可选的
md5
参数,如果您在应用程序中出于某种原因已经计算了md5,则可以传入md5,但如果您没有传入值,则boto将为您计算。

从文件名
设置内容\u方法将自动为您计算md5校验和。此方法有一个可选的
md5
参数,如果您在应用程序中出于某种原因已经计算了md5,则可以传入md5,但如果您没有传入值,boto将为您计算。

正如@garnatt所说,
set\u contents\u from\u filename
方法将自动为您计算MD5校验和

如果您查看文档,有一个名为
compute\u md5
的方法,它返回一个元组,其中包含hexdigest中的md5校验和(您使用
md5sum
在控制台中获得的内容)以及发送到Amazon的base64编码,这是您在标题中看到的内容


set\u contents\u from\u filename
方法中的
md5
参数采用元组格式的md5校验和,与
compute\u md5
返回的方式相同。如果需要手动计算,最好的方法是使用
compute\u md5
方法。否则,在将元组传递给
md5
参数之前,您必须以正确的格式构建元组。

正如@garnatt已经说过的那样,
set\u contents\u from\u filename
方法将自动为您计算md5校验和

如果您查看文档,有一个名为
compute\u md5
的方法,它返回一个元组,其中包含hexdigest中的md5校验和(您使用
md5sum
在控制台中获得的内容)以及发送到Amazon的base64编码,这是您在标题中看到的内容


set\u contents\u from\u filename
方法中的
md5
参数采用元组格式的md5校验和,与
compute\u md5
返回的方式相同。如果需要手动计算,最好的方法是使用
compute\u md5
方法。否则,在将元组传递给
md5
参数之前,必须以正确的格式构建元组。

通过boto计算的md5是校验和的基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())

boto计算的MD5是校验和的基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())

当我打开日志文件时,我有“DEBUG:Headers:{'x-amz-meta-host_name':'xp vm','Content Length':'35250','Expect':'100 Continue','Content-MD5':'dzci3kdipwmdzwdabaajg=','Content Type':'application/octet stream','User Agent':'Boto/2.6.0-dev(win32)}”。content-md5是md5值吗?。对于控制台中执行md5时的同一文件,我的值为“dde831f630d056bb79d7d236f52135ff”,这是boto计算的md5。通过在请求中发送MD5,这意味着S3可以计算其接收内容的MD5,如果它们不匹配,S3将返回一个错误,指示进程中有东西被损坏。这是一项重要的完整性检查。我不知道为什么MD5在控制台中看起来有所不同。唯一的原因可能是内容本身因某种原因而不同。我相信boto的MD5计算是正确的。当我整理日志文件时,这就是我的“调试:头文件:{'x-amz-meta-host_name':'xp vm','Content Length':'35250','Expect':'100 Continue','Content-MD5':'dzci3kdipwmdzwdabaajg=','Content Type':'application/octet stream','User Agent':'boto/2.6.0-dev(win32)}”。content-md5是md5值吗?。对于控制台中执行md5时的同一文件,我的值为“dde831f630d056bb79d7d236f52135ff”,这是boto计算的md5。通过在请求中发送MD5,这意味着S3可以计算其接收内容的MD5,如果它们不匹配,S3将返回一个错误,指示进程中有东西被损坏。这是一项重要的完整性检查。我不知道为什么MD5在控制台中看起来有所不同。唯一的原因可能是内容本身因某种原因而不同。我相信boto的MD5计算是正确的。