一尘不染

在Django中使用相同的输入名称上传多个文件

django

即时通讯在上传具有相同输入名称的多个文件时遇到麻烦:

<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’]对象下。如何处理从此处上传的每个文件?


阅读 522

收藏
2020-03-29

共1个答案

一尘不染

for f in request.FILES.getlist('file'):
    # do something with the file f...

编辑:我知道这是一个旧答案,但是我刚才遇到了这个答案,并且已经将答案编辑为实际上是正确的。以前建议你可以直接进行迭代request.FILES['file']。要访问MultiValueDict中的所有项目,请使用.getlist('file')。使用just ['file']只会返回它为该键找到的最后一个数据值。

2020-03-29