Почему кнопка загрузки на сайте Python не работает - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть веб-сайт Flask, на котором я хочу добавить кнопку загрузки, которая загружает файл .csv с очищенными данными.

В моем html-файле у меня есть этот код:

<a href="cms_scrape.csv" ><button>Download!</button></a>

И тольковывод, который я получаю - ошибка: запрошенный URL не найден на сервереЕсли вы ввели URL-адрес вручную, проверьте правильность написания и повторите попытку.

Файл находится в правильной папке.

Структура моей папки:

└───Project
│   cms_scrape.csv
│
└───templates

        index.html

Ответы [ 3 ]

0 голосов
/ 16 декабря 2018

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

Использование:

<a href="/path/to/file" download>

Источник: https://www.w3schools.com/tags/att_a_download.asp

0 голосов
/ 17 декабря 2018

Вы можете создавать ссылки на файлы с помощью функции

{{ url_for('static', filename='filename.foo') }}

внутри шаблона.Вы должны сохранить файл в папке с именем «static», которая должна находиться в каталоге, где находится основной сценарий.

Ссылка в вашем шаблоне должна выглядеть следующим образом:

<a href=" {{ url_for('static', filename='cms_scrape.csv') }} " download>Download!</a>
0 голосов
/ 16 декабря 2018

Вам нужно будет указать какой-то маршрут в бэкэнде вашего сайта.

Например, где-то на вашем сайте фляги у вас, вероятно, есть маршрут @app.route('/') для индекса.Вам понадобится аналогичный маршрут для вашего файла.Этот маршрут выйдет в вашу файловую систему и вернет сам файл.

@app.route('/csv_file')
def csv_file():
    return flask.send_file('path/to/file/cms_scrape.csv',
                           attachment_filename='cms_scrape.csv',
                           as_attachment=True)

Вам также понадобится изменить html для доступа к маршруту, а не к имени файла напрямую (если вы не создадите свои маршруты динамически,конечно):

<a href="/csv_file" ><button>Download!</button></a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...