Python 无法使用flask下载文件,而是显示在浏览器上

Python 无法使用flask下载文件,而是显示在浏览器上,python,flask,Python,Flask,我阅读了很多关于如何从网站下载文件的文档和问题。我尝试使用send\u from\u directory,send\u file等,但所有响应都是相同的,即显示文件内容而不是下载文件 例如: return send_from_directory(directory="/var/tmp/", filename="app.log") 不确定是否需要更改任何apache配置或wsgi配置。取决于apache与wsgi应用程序的交互方式 您可以使用.htaccess或main config或 send

我阅读了很多关于如何从网站下载文件的文档和问题。我尝试使用
send\u from\u directory
send\u file
等,但所有响应都是相同的,即显示文件内容而不是下载文件

例如:

return send_from_directory(directory="/var/tmp/", filename="app.log")

不确定是否需要更改任何apache配置或wsgi配置。

取决于apache与wsgi应用程序的交互方式

您可以使用.htaccess或main config或

send_file(filename="/var/tmp/app.log",mimetype='application/octet-stream')
send_from_directory(directory="/var/tmp/", filename="app.log",mimetype='application/octet-stream')
请注意,您的Flask应用程序必须能够访问正在发送的文件以及Apache。

2020答案

作为参数传递附件

return send_from_directory(directory="/var/tmp/", filename="app.log", as_attachment = True)

我最近没有讨论过Flask中的文件下载,但是对于其他想要帮助你的人来说,看看你的应用程序生成的响应标题的示例可能会非常有帮助,特别是
内容类型
内容配置
。谢谢你的提示,让我看看我是否能从中得到什么。你使用的浏览器是什么?嗨,Rob,我正在Chrome和safari上测试。你的apache可以访问文件,我尝试了你的两个选项,但仍然在浏览器上呈现文件内容。然后apache可能会覆盖flask内容标题。或者介于两者之间。一些中间件。尝试在Apachei中强制使用头文件,我试图弄明白这一点,但不确定如何测试它。