调用PutObject操作s3 boto时出现BadDigest

时间:2018-07-22 18:35:05

标签: python amazon-s3 boto3

此代码可以正常工作

import boto3

def upload(request):
    try:
        get_file = request.POST['file'].file
        d_filename = 'foo-'+uuid.uuid4().hex
        s3 = boto3.resource('s3')
        s3.Bucket('Bucket_name').put_object(Key=d_filename, Body=get_file, ContentType=ContentType)
        return d_filename
    except Exception, e:
        log.error(str(e))
        return 'error'

但是当我想将文件的md5哈希放入文件名时,它会引发错误-“调用PutObject操作时发生错误(BadDigest)(已达到最大重试次数:4):您指定的Content-MD5与我们的收到。”

import boto3
import hashlib

def upload(request):
    try:
        get_file = request.POST['file'].file
        d_filename = 'foo-'+str(hashlib.md5(get_file.read()).hexdigest())
        s3 = boto3.resource('s3')
        s3.Bucket('Bucket_name').put_object(Key=d_filename, Body=get_file, ContentType=ContentType)
        return d_filename
    except Exception, e:
        log.error(str(e))
        return 'error'

我不是要计算已经上传的文件的md5,也不是要为文件设置md5,而是要在文件名中使用md5。

0 个答案:

没有答案