HTML 下载失败说 "Failed-No file" 使用 python flask 服务器

HTML download fails saying "Failed-No file" with python flask server

我是网络编程领域的新手,想看看是否可以创建 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>

download 文件夹中没有任何内容。

一个快速的解决方法可能是将静态文件夹具体设置为 download

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

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

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

<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') }}