他ではなく、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
しましたが、文字列データで機能します。ただし、ファイルまたはストリームを扱うものはすべて、上記のエラーが発生します。どこかに設定がありませんか、それとも私がやっていることは完全に間違っていますか?