Python flask загрузка файлов на сервер – пример
Загрузка файлов — это процесс передачи двоичных или обычных файлов на сервер, Flask позволяет нам легко загружать их. Все, что нам нужно, это иметь HTML-форму с шифрованием, установленным на multipart/form-data.
Сценарий flask на стороне сервера извлекает файл из объекта запроса, используя объект request.files[]. После успешной загрузки файл сохраняется в нужном месте на сервере.
Загруженный файл сохраняется во временном каталоге сервера на некоторое время, прежде чем он будет сохранен в нужном месте. Имя целевого файла можно получить, используя следующий синтаксис.
name = request.files['file'].filename
Однако мы можем указать путь к папке, в которую файл должен быть загружен на сервере, и максимальный размер загружаемого файла. Все это можно сделать в настройках конфигурации объекта flask.
№ | Синтаксис | Описание |
---|---|---|
1 | app.config[‘UPLOAD_FOLDER’] | Он используется для упоминания папки загрузки. |
2 | app.config[‘MAX_CONTENT-PATH’] | Он используется для указания максимального размера загружаемого файла. |
Рассмотрим следующий пример загрузки файла из локальной файловой системы на сервер.
Пример
В этом примере мы предоставим пользователю селектор файлов (file_upload_form.html), где пользователь может выбрать файл из файловой системы и отправить его на сервер.
Файл извлекается с помощью объекта request.files[‘file’] и сохраняется на сервере.
Поскольку мы используем сервер разработки на том же устройстве, файл будет загружен в каталог, из которого выполняется flask скрипт upload.py.
from flask import * app = Flask(__name__) @app.route('/') def upload(): return render_template("file_upload_form.html") @app.route('/success', methods = ['POST']) def success(): if request.method == 'POST': f = request.files['file'] f.save(f.filename) return render_template("success.html", name = f.filename) if __name__ == '__main__': app.run(debug = True)
File uploaded successfully
File Name: >
Пользователю отображается HTML-форма, чтобы он мог просматривать файловую систему в поисках файла, который будет загружен на сервер разработки.
Здесь пользователь выбрал файл с именем galexy.jpg, который будет загружен на сервер.
Приведенный ниже снимок создается для URL-адреса localhost:5000/success. При успешной загрузке файла пользователю отображается сообщение об успешном выполнении с именем загруженного файла.
Мы можем подтвердить это, зайдя в каталог, где находится upload.py, как показано на изображении ниже.