此代码可以正常工作
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。