Загрузка файлов на сервер с Python и Flask
Здравствуйте. Как известно, загрузка файлов является обычной задачей в веб-приложениях. Для этой цели используются HTML-формы с шифрованием multipart/form-data для передачи данных на сервер. В данной статье мы рассмотрим, как реализовать загрузку файлов посредством фреймворка Flask и языка Python. Итак, приступим.
Для начала, необходимо установить Flask с помощью терминальной команды:
pip install Flask
Шаг 1:
Создайте новую папку под названием Загрузка файлов. Внутри создайте файл main.py , а также папки templates и uploads.
Шаг 2:
В папке templates создайте простую HTML-страницу index.html, позволяющую выбирать несколько файлов и отправлять их для загрузки на сервер. HTML-форма содержит элементы для выбора и загрузки файлов методом POST. Атрибут enctype определяет, как данные формы будут закодированы при отправке на сервер. Поскольку мы загружаем файлы, установим значение атрибута enctype в multipart/form-data.
<!-- index.html -->
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<label for="file">Выберите файлы для загрузки:</label>
<input type="file" id="file" name="file" multiple>
<input type="submit" value="Загрузить">
</form>
</body>
Шаг 3:
В файле main.py импортируйте модули Flask и создайте маршруты с помощью декоратора @app.route . Получите список файлов, загруженных с веб-страницы, и сохраните их один за другим в корневой каталог с использованием цикла и функции file.save().
# main.py
from flask import Flask, render_template, request
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def show_main_page():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def handle_file_upload():
if request.method == 'POST':
uploaded_files = request.files.getlist("file")
for uploaded_file in uploaded_files:
filename = uploaded_file.filename
file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
uploaded_file.save(file_path)
return "Файлы успешно загружены в папку 'uploads'!"
if __name__ == '__main__':
app.run(debug=True)
Далее, открываем терминал и переходим к папке с файлом main.py. После чего вводим:
>>>python main.py
# вывод
https://127.x.x.x
Переходим по указанному адресу в браузере и нажимаем кнопку загрузить, выбрав соответствующий файл. После чего файл будет загружен в папку uploads. Таким образом, мы рассмотрели способ загрузки файлов на сайт, с помощью языка Python и библиотеки Flask. А если вам необходимо углубиться в изучение Python с нуля до экспертного уровня, я рекомендую пройти видеокурс Программирование на Python с Нуля до Гуру.
-
- Михаил Русаков
Комментарии (2):
Спасибо! Ваши информация очень полезная. С уважением к Вам Ахмад.
Ответить
\Загрузка файлов\main.py", line 18, in handle_file_upload file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) ^^ NameError: name 'os' is not defined Переделывай свою хуйню, просто с другого сайта скопипастить не может и забыл про импорт os
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.