質問

s3にファイルをアップロードする方法を探しています。私はジャンゴを使用しています。現在、次のコードと一緒にアップロードするためにAmazonのPythonライブラリを使用しています:

表示:

def submitpicture(request):
    fuser = request.session["login"]

    copied_data = request.POST.copy()
    copied_data.update(request.FILES)
    content_type = copied_data['file'].get('content-type')
    ffile = copied_data['file']['content']
    key = '%s-%s' % (fuser, ''.join(copied_data['file']['filename'].split(' ')))
    site_s3.save_s3_data(key, ffile, content_type)

テンプレート:

<form action="/submitpicture/" method="POST">
    <input type="file" id="file" name="file" />
    <input type="submit" value="submit" />
</form>

ただし、実際に実行しようとすると、次のエラーが表示されます。

"Key 'file' not found in <QueryDict: {}>"
#MultiValueDictKeyError

私が実際に間違っていることはわかりません。誰かが私を正しい方向に向けることができますか?

編集:誰かが不思議に思った場合に備えて、実際のアップロードが機能するようになった後、検証を追加する予定です。

役に立ちましたか?

解決

enctype属性をFORM要素に提供する必要があります(以前にこれにかまれました)。たとえば、FORMタグは次のようになります。

<form action="/submitpicture/" method="POST" enctype="multipart/form-data" >

enctypeがない場合、空のrequest.FILESが表示されます。

他のヒント

これを手動で行う代わりに、David LarletがDjango用に作成したストレージバックエンド django-storages

enctype =&quot; multipart / form-data&quot;の追加&quot; File Uploads&quot;で言及する価値があるもののようです。 django docsのセクション( http://docs.djangoproject.com / en / dev / topics / http / file-uploads / )。思考?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top