我正在尝试使用 boto 库创建一个超级简单的文件上传脚本,而不是其他任何库。根据我的尝试,感觉它应该可以工作,但事实并非如此。
我现在得到的错误是:
S3ResponseError: 400 Bad Request
这是我认为的代码:
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
file = request.FILES['file']
filename = file.name
conn = boto.connect_s3()
bucket = conn.create_bucket('some-bucket-name')
from boto.s3.key import Key
k = Key(bucket)
k.key = filename
k.send_file(file)
k.content_type = mimetypes.guess_type(filename)[0]
k.set_contents_from_stream(file.chunks())
k.set_acl('public-read')
return HttpResponseRedirect('/')
else:
form = UploadFileForm()
return render_to_response('home/upload.html',
{'form':form},
context_instance=RequestContext(request))
如果我修改它以在本地保存它可以工作,所以上传到 s3 被破坏了。我已经测试过set_contents_from_string
,这适用于字符串数据。但是,任何处理文件或流的东西都会出现上述错误。我是在某处错过了一个设置,还是我在做什么完全错了?