存储桶 POST 必须包含一个名为 'key' 的字段
Bucket POST must contain a field named 'key'
我正在尝试将图像上传到 s3。我继续收到此错误:
Bucket POST must contain a field named 'key'. If it is specified, please check the order of the fields.
这是我要发送到 s3 的代码:
content_type = "image/JPEG"
key = 'uploads/filename.jpg'
acl = 'public-read'
bucket = None
params_raw = create_upload_data(content_type,key,acl,bucket)
params = { 'policy': params_raw['policy'],'acl':acl,'signature':params_raw['signature'],'key':params_raw['key'],'Content-Type':params_raw['Content-Type'],'AWSAccessKeyId':params_raw['AWSAccessKeyId'],'success_action_status':params_raw['success_action_status'],'file': binary_data}
r = requests.post(params_raw['form_action'],data=params,files={'file':binary_data})
return JsonResponse({'request':str(r.text)},safe=False)
我试过将参数 'key' 移到参数的前面,但仍然会产生相同的错误。我做错了什么?
Python 字典是无序的。序列化它们时,无法预测 key/values 对的顺序。
再试一次 OrderedDict。
编辑:
从 Python 3.6 开始,dicts 是默认排序的,这是一个实现细节,而不是新标准。继续使用 OrderedDict
,它更明确、更兼容且面向未来。
我正在尝试将图像上传到 s3。我继续收到此错误:
Bucket POST must contain a field named 'key'. If it is specified, please check the order of the fields.
这是我要发送到 s3 的代码:
content_type = "image/JPEG"
key = 'uploads/filename.jpg'
acl = 'public-read'
bucket = None
params_raw = create_upload_data(content_type,key,acl,bucket)
params = { 'policy': params_raw['policy'],'acl':acl,'signature':params_raw['signature'],'key':params_raw['key'],'Content-Type':params_raw['Content-Type'],'AWSAccessKeyId':params_raw['AWSAccessKeyId'],'success_action_status':params_raw['success_action_status'],'file': binary_data}
r = requests.post(params_raw['form_action'],data=params,files={'file':binary_data})
return JsonResponse({'request':str(r.text)},safe=False)
我试过将参数 'key' 移到参数的前面,但仍然会产生相同的错误。我做错了什么?
Python 字典是无序的。序列化它们时,无法预测 key/values 对的顺序。
再试一次 OrderedDict。
编辑:
从 Python 3.6 开始,dicts 是默认排序的,这是一个实现细节,而不是新标准。继续使用 OrderedDict
,它更明确、更兼容且面向未来。