【问题标题】:HTML download fails saying "Failed-No file" with python flask serverHTML 下载失败,使用 python 烧瓶服务器显示“失败 - 无文件”
【发布时间】:2020-06-22 09:24:30
【问题描述】:

我是网络编程领域的新手,想看看我是否可以创建一个 zip 文件的下载。我在我的 HTML 中创建了一个锚元素,如下所示:<a href="./download/myFile.zip" download>Download File</a> 然后,我创建了这样的 Flask 服务器:

from flask import Flask, render_template, request
app = Flask(__name__, template_folder="C:/Users/User/Desktop/website")
@app.route('/')
def upload_file():
    return render_template('index.html')

然后我启动服务器并转到地址。我点击下载文件,它说失败 - 没有文件。我的网站目录看起来像这样。

下载文件夹内的唯一文件是 myFile.zip。谁能告诉我为什么会这样以及如何解决?如果您想查看 index.html 中的完整代码,请参阅下面的内容。谢谢!

<!DOCTYPE html>
<html>
<head>
    <title>File</title>
</head>
<body>
    <h1>File</h1>
    
    <h2>Download</h2>
    <a href="./download/myFile.zip" download>Download File</a>
</body>
</html>

【问题讨论】:

  • 你能把你所有的代码贴在这里吗?
  • @Frank AK 我已经编辑了我的问题。

标签: html python-3.x flask server download


【解决方案1】:

没有为download 文件夹提供服务。

一种快速的解决方法可能是将静态文件夹专门设置为download

app = Flask(__name__, template_folder="C:/Users/User/Desktop/website"
                      static_folder="download")

但是,您可能希望坚持使用默认值 'static'(而不是提供 static_folder 参数。

因此,您可以将 download 文件夹重命名为 static 并使用 Jinja2 语法生成链接:

<a href="{{ url_for('static', filename='myFile.zip') }}" download>Download File</a>

然后此 URL 呈现为:

/static/myFile.zip

如果您想更进一步,将可下载的文件存储在名为 static/download 的文件夹中,Jinja 语法将是:

{{ url_for('static', filename='download/myFile.zip') }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多