import flask
flask.send_from_directory(directory, path, filename=None, **kwargs)
directory
- каталог, в котором должен находиться путь path
. Может быть строкой или os.PathLike
объектом.path
- путь к файлу относительно каталога directory
. Может быть строкой или os.PathLike
объектом.**kwargs
- дополнительные ключевые аргументы для передачи в функцию send_file()
.filename=None
- строка. УСТАРЕЛО с версии Flask 2.0.Внимание! В версии Flask 2.0 некоторые аргументы функций flask.send_from_directory()
и flask.send_file()
были переименованы. Срок удаления из API старых имен аргументов продлен до версии Flask 2.2.
attachment_filename
переименовывается в download_name
.cache_timeout
переименовывается в max_age
.add_etags
переименован в etag
.filename
переименовывается в path
.Функция send_from_directory()
модуля flask
безопасно отправляет файл path
из каталога directory
с помощью функции flask.send_file()
.
@app.route("/uploads/<path:name>")
def download_file(name):
return send_from_directory(
app.config['UPLOAD_FOLDER'], name, as_attachment=True
)
Это безопасный способ обслуживания файлов из папки, например статических файлов или загрузок. Функция send_from_directory()
использует flask.safe_join()
, которая гарантирует, что путь, исходящий от клиента, не будет указывать за пределы указанного каталога.
Если окончательный путь не указывает на существующий файл, то возникает ошибка 404 NotFound
.
Изменено в версии 2.0: path
заменяет аргумент имени файла filename
.
Новое в версии 2.0: реализация перенесена в модуль Werkzeug
. Теперь функция представляет собой обертку для передачи некоторых специфичных для Flask аргументов.