multiple files upload using same input name in django multiple files upload using same input name in django django django

multiple files upload using same input name in django


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

EDIT: I know this was an old answer, but I came across it just now and have edited the answer to actually be correct. It was previously suggesting that you could iterate directly over request.FILES['file']. To access all items in a MultiValueDict, you use .getlist('file'). Using just ['file'] will only return the last data value it finds for that key.


Given your url points to envia you could manage multiple files like this:

#!/usr/bin/env python# -*- coding: UTF-8 -*-from django.http import HttpResponseRedirectdef envia(request):    for f in request.FILES.getlist('file'):        handle_uploaded_file(f)    return HttpResponseRedirect('/bulk/')def handle_uploaded_file(f):    destination = open('/tmp/upload/%s'%f.name, 'wb+')    for chunk in f.chunks():        destination.write(chunk)    destination.close()


I dont think all three files will be under the single request.FILES['file'] object. request.FILES['file'] is likely to have either the 1st file or the last file from that list.

You need to uniquely name the input elements like so:

<input type=file name="file1"><input type=file name="file2"><input type=file name="file3">

..for example.

EDIT: Justin's answer is better!