multiple files upload using same input name in django

前端 未结 4 901
北海茫月
北海茫月 2020-11-30 02:45

i m having trouble in uploading multiple files with same input name:





        
相关标签:
4条回答
  • 2020-11-30 03:03

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

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    from django.http import HttpResponseRedirect
    
    def 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()
    
    0 讨论(0)
  • 2020-11-30 03:12

    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!

    0 讨论(0)
  • 2020-11-30 03:17

    This code is the example

        for f in request.FILES.getlist('myfile[]'):
            if request.method == 'POST' and f:
                myfile = f
                filesystem = FileSystemStorage()
                filename = filesystem.save(myfile.name, myfile)
    
    0 讨论(0)
  • 2020-11-30 03:18
    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.

    0 讨论(0)
提交回复
热议问题