несколько загрузок файлов с помощью того же входа называют в django

=ARRAYFORMULA(IF(QUERY(T3:V7)="", 0, QUERY(T3:V7)))

0

20
задан Paolo Bergantino 12 May 2009 в 06:03
поделиться

3 ответа

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

РЕДАКТИРОВАТЬ: Я знаю это был старый ответ, но я столкнулся с ним только сейчас и отредактировал ответ, чтобы он был действительно правильным. Ранее предполагалось, что вы можете выполнять итерацию напрямую по request.FILES ['file'] . Чтобы получить доступ ко всем элементам в MultiValueDict, вы используете .getlist ('file') . Использование только ['file'] вернет только последнее значение данных, найденное для этого ключа.

62
ответ дан 29 November 2019 в 22:38
поделиться

Я не думаю, что все три файла будут находиться под одним объектом request.FILES ['file'] . request.FILES ['file'] , скорее всего, будет иметь либо 1-й файл, либо последний файл из этого списка.

Вам нужно однозначно назвать элементы ввода, например:

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

.. для пример.

РЕДАКТИРОВАТЬ: Ответ Джастина лучше!

1
ответ дан 29 November 2019 в 22:38
поделиться

Учитывая, что ваш URL указывает на envia , вы можете управлять несколькими файлами следующим образом:

#!/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()
10
ответ дан 29 November 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: