我在寻找一种方式将文件上载到s3。我使用django。我目前正在使用亚马逊的蟒蛇图书馆上载和下列代码:

观点:

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" >

如果没有加密类型,你会发现自己与一个空request.FILES。

其他提示

而不是做这个手工我想借此看看存储后端大卫Larlet已Django的书面的 Django的存储器

加enctype="multipart/form-data"似乎喜欢的东西这就是值得一提的是,在"文件上传"部分的决docs(http://docs.djangoproject.com/en/dev/topics/http/file-uploads/).想法?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top