2

我仍在努力将文件流式传输到 Pylons 中的 HTTP 响应。除了原始问题之外,我发现我无法返回 Content-Length 标头,因此对于大文件,客户端无法估计下载需要多长时间。我试过了

response.content_length = 12345

我试过了

response.headers['Content-Length'] = 12345

在这两种情况下,HTTP 响应(在 Fiddler 中查看)根本不包含 Content-Length 标头。如何让 Pylons 返回此标头?

(哦,如果您对使其流式传输文件有任何想法,请回复原始问题 - 我完全没有想法。)

编辑:虽然不是通用解决方案,但用于提供静态文件FileApp允许发送 Content-Length 标头。对于动态内容,看起来Alex Martelli的答案是唯一的选择。

4

2 回答 2

1

这里有一些中间件代码,可确保所有响应在缺少内容长度标头时获得内容长度标头。您可以对其进行调整,以便在响应中设置一些其他标头(例如“X-The-Content-Length”),如果后者丢失,中间件会使用它来确定内容长度。我将整个事情视为我认为是 pylons 错误的一种解决方法(它对内容长度的傲慢态度!)但显然 pylons 的作者在这方面不同意我的观点,所以至少有解决方法很好!-)

于 2010-05-06T02:00:27.440 回答
0

尝试:

response.headerlist.append((str("Content-Length"), str(" 123456")))
于 2010-05-06T02:28:03.610 回答