<p>要复制您遇到的错误,请执行以下操作:</p>
<pre><code>import json
from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket('some-bucket')
# blob1 object
blob1 = bucket.get_blob('file.json')
# downloads content
blob1_string = blob1.download_as_string()
# converts to dict and update content
blob1_obj = json.loads(blob1_string)
blob1_obj['some-key'] = 'some value'
# upload using same blob instance
blob1.upload_from_string(json.dumps(blob1_obj))
# throws error like this `Provided MD5 hash "Ax9olGoqOSb7Nay2LNkCSQ==\" #doesn't match calculated MD5 hash \"XCMPR0o7NdgmI5zN1fMm6Q==\".",
</code></pre>
<p>您可能正在使用相同的blob来下载和上载内容。要防止此错误,您需要创建两个blob实例:</p>
<pre><code>import json
from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket("some-bucket")
# blob1 object for downloading contents
blob1 = bucket.get_blob('file.json')
blob1_string = blob1.download_as_string()
# Convert to dictionary
blob1_obj = json.loads(blob1_string)
# Add stuff
blob1_obj['some-key'] = 'some value'
# blob2 object for uploading contents
blob2 = bucket.get_blob('file.json')
blob2.upload_from_string(json.dumps(blob1_obj))
# no error
</code></pre>