如何使用django(python)和s3上传文件?

rks*_*rst 12 python django file-upload amazon-s3

我正在寻找一种将文件上传到s3的方法.我正在使用django.我目前正在使用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)
Run Code Online (Sandbox Code Playgroud)

模板:

<form action="/submitpicture/" method="POST">
    <input type="file" id="file" name="file" />
    <input type="submit" value="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

但是,当我实际尝试运行它时,我收到以下错误:

"Key 'file' not found in <QueryDict: {}>"
#MultiValueDictKeyError
Run Code Online (Sandbox Code Playgroud)

我真的不明白我做错了什么.有人能指出我正确的方向吗?

编辑:为了防止有人想知道,我计划在实际上传工作后添加一些验证.

aya*_*yaz 18

你必须为FORM元素提供enctype属性(我之前已经被它咬过).例如,您的FORM标记应如下所示:

<form action="/submitpicture/" method="POST" enctype="multipart/form-data" >
Run Code Online (Sandbox Code Playgroud)

没有enctype,你会发现自己有一个空的请求.FILES.


Ale*_*nor 5

与其手动进行操作,不如看一下David Larlet为Django(django- storages)编写的存储后端