Flask перенаправить на внешний файл и указать имя файла вместо исходного - PullRequest
0 голосов
/ 20 апреля 2020

Я использую Flask для подачи заявки. До недавнего времени Flask обслуживал файлы для загрузки с использованием потока ответов.

Из-за увеличения количества ошибок рабочих, теперь мне нужно перенаправить запрос во внешнее местоположение, где файлы хранятся в формате 7249ed01-9c3d-45fe-895c-5a27db785d2d.tar.gz имени файла. Само перенаправление работает, но имя файла, отображаемое в диалоговом окне сохранения в браузере, по-прежнему 7249ed01-9c3d-45fe-895c-5a27db785d2d.

Пример кода приведен ниже.

@app.route("/download/<filename>")
def view_file_download(filename):
    # filename can be ignored, used to retrieve info from db
    url = "https://example.com/7249ed01-9c3d-45fe-895c-5a27db785d2d.tar.gz"
    filename_orig = "example.tar.gz"
    filesize = 123456 
    res = flask.redirect(url, code=303)
    res.headers.set("Location", url)
    res.headers.set("Content-Disposition", "attachment", filename=filename_orig)
    res.headers.set("Content-Length", filesize)

    return res

1 Ответ

0 голосов
/ 22 апреля 2020

Невозможно предоставить заголовок размещения контента для ответа на перенаправление.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...