12

ファイルを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

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

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

4

3 に答える 3

18

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

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

enctypeがないと、request.FILESが空になります。

于 2008-11-26T06:57:11.210 に答える
5

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

于 2008-11-26T07:01:06.817 に答える
2

enctype="multipart/form-data" を追加することは、django ドキュメント ( http://docs.djangoproject.com/en/dev/topics/http/file-uploads/)。考え?

于 2009-03-23T21:34:01.480 に答える