我在上传具有相同输入名称的多个文件时遇到问题:
<input type=file name="file">
<input type=file name="file">
<input type=file name="file">
Run Code Online (Sandbox Code Playgroud)
在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)>
]}>
Run Code Online (Sandbox Code Playgroud)
所以这三个文件都在单个request.FILES ['file']对象下.我如何处理从这里上传的每个文件?
我按照文档的模式,上传了几个文件forms.FileField
:
https://docs.djangoproject.com/en/1.11/topics/http/file-uploads/#uploading-multiple-files
不幸的是,cleaned_data['file']
它包含一个文件,而不是两个文件
要将所有上传的文件打开,需要做些什么cleaned_data['file']
?
以下是文档中的代码:
forms.py
from django import forms
class FileFieldForm(forms.Form):
file_field = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
Run Code Online (Sandbox Code Playgroud)
views.py
from django.views.generic.edit import FormView
from .forms import FileFieldForm
class FileFieldView(FormView):
form_class = FileFieldForm
template_name = 'upload.html' # Replace with your template.
success_url = '...' # Replace with your URL or reverse().
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
files = request.FILES.getlist('file_field')
if form.is_valid():
for f in files:
... # Do something with each …
Run Code Online (Sandbox Code Playgroud)