服务器无法读取Django在一个输入中的多个文件

时间:2012-12-02 02:36:45

标签: django file-upload

当我向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。

1 个答案:

答案 0 :(得分:9)

事实证明答案是在Stack Overflow上,在这里稍微不同(客户端,至少)问题:multiple files upload using same input name in django

原来request.FILES['files']错误,应该是request.FILES.getlist('file')

为什么会出现这种情况对我来说是一个完全的谜。如果有人可以回答解释,我很乐意转换接受的答案。