在Flask中以HTTP响应头中的Content-Length提供静态文件

2 投票
1 回答
2171 浏览
提问于 2025-04-18 16:40

我正在写一个小的Python Flask应用程序,目的是让人们可以从我的服务器下载文件。这些文件是由Python提供的,而不是像Nginx或Apache这样的网络服务器。

我尝试使用send_from_directory()send_file()来下载文件,虽然文件可以下载,但没有显示文件大小,因为在响应的头部缺少Content-Length字段。

我该如何在使用send_from_directory()send_file()时添加这个头部呢?或者有没有其他更好的方法来实现这个功能。

谢谢。

1 个回答

1

如果你在Flask中使用 send_file() 并且传入的是一个 文件名(而不是文件对象),Flask会自动帮你设置 Content-Length 这个头信息。

send_from_directory() 其实是用 send_file() 来处理文件名的,所以你在这方面不用担心。

记得要使用Flask 0.10或更新的版本;这个头信息的设置是在那个版本中添加的。

撰写回答