当我向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。
答案 0 :(得分:9)
事实证明答案是在Stack Overflow上,在这里稍微不同(客户端,至少)问题:multiple files upload using same input name in django
原来request.FILES['files']
错误,应该是request.FILES.getlist('file')
。
为什么会出现这种情况对我来说是一个完全的谜。如果有人可以回答解释,我很乐意转换接受的答案。