Flask Загрузить файл: методы и примеры кода

Flask – это популярная веб-платформа Python, позволяющая разработчикам эффективно создавать веб-приложения. Одним из распространенных требований в веб-разработке является возможность предоставления пользователям возможности загрузки файлов. В этой статье блога мы рассмотрим различные методы реализации загрузки файлов с помощью Flask, а также приведем примеры кода.

Метод 1: использование функции send_file()
Функция send_file(), предоставляемая Flask, представляет собой простой метод включения загрузки файлов. Он принимает путь к файлу в качестве входных данных и отправляет файл клиенту.

from flask import Flask, send_file
app = Flask(__name__)
@app.route('/download')
def download_file():
    file_path = 'path/to/file.pdf'
    return send_file(file_path, as_attachment=True)
if __name__ == '__main__':
    app.run()

Метод 2: потоковая загрузка файлов
Для больших файлов потоковая передача содержимого файла является более эффективным подходом. Flask предоставляет функцию send_from_directory(), которую можно использовать для потоковой передачи файлов клиенту.

from flask import Flask, send_from_directory
app = Flask(__name__)
@app.route('/download')
def download_file():
    directory = 'path/to/files'
    filename = 'file.pdf'
    return send_from_directory(directory, filename, as_attachment=True)
if __name__ == '__main__':
    app.run()

Метод 3: пользовательская загрузка файлов
В некоторых случаях перед загрузкой может потребоваться динамическое создание файлов. Вы можете использовать объект Flask Response для создания собственных загрузок файлов.

from flask import Flask, Response
app = Flask(__name__)
@app.route('/download')
def download_file():
    file_content = generate_file_content()  # Custom file generation logic
    filename = 'file.txt'
    return Response(file_content, mimetype='text/plain',
                    headers={'Content-Disposition': f'attachment;filename={filename}'})
if __name__ == '__main__':
    app.run()

В этой статье мы рассмотрели различные способы включения загрузки файлов в Flask. Мы рассмотрели использование функций send_file() и send_from_directory() для загрузки статических файлов, а также создание пользовательских загрузок файлов с помощью объекта Flask Response. Реализуя эти методы, вы можете улучшить функциональность своих приложений Flask и обеспечить удобство загрузки файлов для своих пользователей.