我正在尝试在页面上设置下载按钮,该按钮会在单击时开始下载文件。使用flask作为我的框架。我正在尝试在单击按钮时开始下载并发送GET请求,但什么也没发生。在我的控制台中,我刚收到"127.0.0.1 - - [04/Feb/2014 00:10:57] "GET /CpFTHHpsJ/ HTTP/1.1" 200 -"
,这与我加载页面时得到的输出相同。
我的 HTML 表单如下所示:
<form method="get" action="">
<input type="submit" value="DOWNLOAD">
</form>
我的 python 用于呈现下载页面并发送文件:
@app.route('/<new_folder_name>/', subdomain='f', methods=['GET'])
def uploaded_file(new_folder_name):
new_folder_path = os.path.join(app.config['FILE_FOLDER'], new_folder_name)
filename = subfolder_fetch(new_folder_path)
return render_template("download.html", filename=filename, new_folder_path=new_folder_path)
if request.method == "GET":
send_from_directory(new_folder_path, filename, as_attachment=True)
很抱歉,如果这是愚蠢的,我是HTML表单和网络编程的初学者。谢谢。
答案 0 :(得分:2)
return
实际上send_from_directory
return render_template
,因此该文件永远不会返回给最终用户。name
。在下载链接表单中添加<input type="submit" name="action" value="Download">
:
if "action" in request.args:
# Download
else:
# Show page
并测试它在控制器中的存在:
@app.route('/<folder>/download')
def download_file(folder):
# etc.
或者,使用指向单独控制器的链接:
<a href="{{ url_for('download_file', folder=folder) }}" class="download">Download Now</a>
并在您的模板中创建一个链接,并将其设置为按钮样式:
{{1}}