English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Обработка загрузки файлов в Flask очень проста. Это требует HTML-формы с атрибутом enctype, установленным в 'multipart/form-data', которая подается на указанный URL. URL-обработчик извлекает файл из объекта request.files[] и сохраняет его в необходимое место.
Каждый загружаемый файл сначала сохраняется в временном месте на сервере, а затем сохраняется в конечное место. Название целевого файла может быть硬кодировано или получено из属性的 filename объекта request.files [file]. Однако, рекомендуется использовать функцию secure_filename() для получения его безопасной версии.
Вы можете определить путь к папке по умолчанию для загрузки файлов и максимальный размер загружаемых файлов в настройках конфигурации объекта Flask.
Переменные | Объяснение |
app.config['UPLOAD_FOLDER'] | Определите путь к папке для загрузки файлов |
app.config['MAX_CONTENT_PATH'] | Укажите максимальный размер файла для загрузки - в байтах |
Следующий код имеет правило URL: /upload, которое показывает файл upload.html из папки templates, а также правило URL => /upload-file, которое обрабатывает процесс загрузки с помощью функции uploader().
upload.html имеет кнопку выбора файла и кнопку подтверждения.
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ru.oldtoolbag.com # Date: 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Пример Flask</title> </head> <body> <form action="http://localhost:5000/upload" method="POST"> enctype="multipart/form-data"> <input type="file" name="file"/> <input type="submit" value="Подтвердить"/> </form> </body> </html>
Вы увидите следующий экран -
Нажмите, после выбора файла ПодтвердитьМетод POST формы вызывается по URL => /upload_file. Функция lower layer uploader() выполняет операцию сохранения файла.
Ниже приведен Python-код приложения Flask.
# Filename: example.py # Copyright: 2020 By w3codebox # Author by: ru.oldtoolbag.com # Date: 2020-08-08 from flask import Flask, render_template, request from werkzeug import secure_filename app = Flask(__name__) @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': f = request.files['file'] print(request.files) f.save(secure_filename(f.filename)) return 'file uploaded successfully' else: return render_template('upload.html') if __name__ == '__main__': app.run(debug=True)
После выполнения программы выполните上面的 код, выберите файл изображения и нажмите кнопку загрузки, получите следующие результаты -