即时通讯在上传具有相同输入名称的多个文件时遇到麻烦:
<input type=file name="file"> <input type=file name="file"> <input type=file name="file">
在Django一侧
print request.FILES : <MultiValueDict: {u'file': [ <TemporaryUploadedFile: captcha_bg.jpg (image/jpeg)>, <TemporaryUploadedFile: 001_using_git_with_django.mov (video/quicktime)>, <TemporaryUploadedFile: ejabberd-ust.odt (application/vnd.oasis.opendocument.text)> ]}>
因此所有三个文件都在单个request.FILES [‘file’]对象下。如何处理从此处上传的每个文件?
for f in request.FILES.getlist('file'): # do something with the file f...
编辑:我知道这是一个旧答案,但是我刚才遇到了这个答案,并且已经将答案编辑为实际上是正确的。以前建议你可以直接进行迭代request.FILES['file']。要访问MultiValueDict中的所有项目,请使用.getlist('file')。使用just ['file']只会返回它为该键找到的最后一个数据值。
request.FILES['file']
MultiValueDict
.getlist('file')
['file']