为什么Python网站上的下载按钮不起作用

时间:2018-12-16 20:52:44

标签: python button flask

我有Flask网站,我想在其中添加下载按钮,该按钮下载包含抓取数据的.csv文件。

在我的html文件中,我有以下代码:

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

我得到的唯一输出是错误:在服务器上找不到所请求的URL。如果您手动输入网址,请检查拼写,然后重试。

文件位于其正确的文件夹中。

我的文件夹结构:

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

        index.html

3 个答案:

答案 0 :(得分:0)

您将需要在网站的后端指定某种路由。

例如,在烧瓶站点的某个地方,您的索引可能有一条路由@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>

答案 1 :(得分:0)

对此不确定,但我认为标记具有可以使用的下载属性。然后,您不需要按钮。

用法:

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

来源:https://www.w3schools.com/tags/att_a_download.asp

答案 2 :(得分:0)

您可以使用

链接到文件
{{ url_for('static', filename='filename.foo') }}
模板中的

功能。您必须将文件存储在名为“ static”的文件夹中,该文件夹应该位于主密码所在的目录中。

模板中的链接应如下所示:

<a href=" {{ url_for('static', filename='cms_scrape.csv') }} " download>Download!</a>