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 и обеспечить удобство загрузки файлов для своих пользователей.