Сообщить об ошибке.

Функция send_from_directory() модуля flask в Python.

Безопасно отправляет файл для загрузки клиенту.

Синтаксис:

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 аргументов.