8

当我向 Django 提交一个多文件上传表单时

<input type="file" name="files" multiple />

我得到了一个合理的结果request.FILES

(MultiValueDict: {u'files': [(InMemoryUploadedFile: 0202.jpg (image/jpeg)), (InMemoryUploadedFile: 0203.jpg (image/jpeg))]})

但随后我的困惑开始了。我以为request.FILES['files']会包含几个文件(似乎是一个列表),但它只显示

0203.jpg

没有InMemoryUploadedFile部分,更重要的是:只有最后一个文件!

循环也只遍历那个文件,request.FILES显然是不可分割的;下面的代码实际上冻结了控制台并使其无休止地发出哔哔声:.iteritems()request.FILES['files']

for v in request.FILES['files']:
    print v
    print type(v)

所以... 这是正常的吗?我究竟做错了什么?

我开始认为这可能是一个错误:我在 Windows 7 上使用 Django 1.4.2 和 Python 2.7。

4

1 回答 1

13

事实证明,答案毕竟是在 Stack Overflow 上,这里有一个稍微不同(至少是客户端)的问题:多个文件在 django 中使用相同的输入名称上传

事实证明这request.FILES['files']是错误的,应该是request.FILES.getlist('file')

为什么会这样,对我来说完全是个谜。如果有人可以用解释来回答,我很乐意切换接受的答案。

于 2012-12-02T02:44:03.967 回答