Подтвердить что ты не робот

Загрузка нескольких файлов с помощью Flask

Есть ли способ получить несколько загруженных файлов с помощью Flask? Я пробовал следующее:

<form method="POST" enctype="multipart/form-data" action="/upload">
  <input type="file" name="file[]" multiple="">
  <input type="submit" value="add">
</form>

Затем распечатайте содержимое request.files['file']:

@app.route('/upload', methods=['POST'])
def upload():
  if not _upload_dir:
    raise ValueError('Uploads are disabled.')

  uploaded_file = flask.request.files['file']
  print uploaded_file
  media.add_for_upload(uploaded_file, _upload_dir)
  return flask.redirect(flask.url_for('_main'))

Если я загружу несколько файлов, он печатает только первый файл в наборе:

<FileStorage: u'test_file.mp3' ('audio/mp3')>  

Есть ли способ получить несколько файлов, используя встроенную загрузку флэков? Спасибо за любую помощь!

4b9b3361

Ответ 1

Вы можете использовать метод getlist flask.request.files, например:

@app.route("/upload", methods=["POST"])
def upload():
    uploaded_files = flask.request.files.getlist("file[]")
    print uploaded_files
    return ""

Ответ 2

Использование Flask 1.0.2:

files = request.files.getlist("images")

Где images - это ключ пары ключ/значение. Значением является несколько изображений.

Ответ 3

Это рабочее решение для колбы версии 1.0.2:

images = request.files.to_dict() #convert multidict to dict
for image in images:     #image will be the key 
    print(images[image])        #this line will print value for the image key
    file_name = images[image].filename
    images[image].save(some_destination)

в основном, у images [image] есть файл изображения с добавленной в него функцией сохранения. Теперь делайте все, что вам нравится, с данными.

Ответ 4

@app.route('/upload', methods=['GET','POST'])
def upload():
    if flask.request.method == "POST":
        files = flask.request.files.getlist("file")
        for file in files:
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))

Это работает для меня.

для UPLOAD_FOLDER, если вам нужно добавить это сразу после app = flask.Flask(name)

UPLOAD_FOLDER = 'static/upload'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER