Commit 54febdb8 authored by Berker Peksag's avatar Berker Peksag Committed by Tim Graham
Browse files

Fixed #26604 -- Added a multiple file upload example to topics/http/file-uploads.txt.

parent bed20555
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -122,6 +122,46 @@ field in the model::
            form = UploadFileForm()
        return render(request, 'upload.html', {'form': form})

Uploading multiple files
------------------------

If you want to upload multiple files using one form field, set the ``multiple``
HTML attribute of field's widget:

.. snippet::
    :filename: forms.py

    from django import forms

    class FileFieldForm(forms.Form):
        file_field = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))

Then override the ``post`` method of your
:class:`~django.views.generic.edit.FormView` subclass to handle multiple file
uploads:

.. snippet::
    :filename: 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 file.
                return self.form_valid(form)
            else:
                return self.form_invalid(form)

Upload Handlers
===============