2010-05-06 69 views
2

我仍在努力達到Stream a file to the HTTP response in Pylons。除了原始問題之外,我發現我無法返回Content-Length標題,因此對於大型文件,客戶端無法估計下載將花費多長時間。我已經試過內容長度標題未從標語響應返回

response.content_length = 12345 

和我試圖

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

在兩種情況下的HTTP響應(在提琴手觀察)根本不包含的Content-Length頭。我如何讓Pylons返回這個頭文件?

(哦,如果你有使它流的文件請回復到原來的問題任何想法 - 我所有的想法在那裏。)

編輯:而不是一個通用的解決方案,用於提供靜態文件FileApp allows sending the Content-Length header。對於動態內容,它看起來像Alex Martelli的答案是唯一的選擇。

回答

1

有一些中間件代碼here可確保所有響應都會在缺少內容長度標題時獲得內容長度標題。您可以調整它,以便在響應中設置其他標題(如'X-The-Content-Length'),並且中間件使用它來使內容長度(如果後者不存在)。我認爲整個事情是一個解決方案,我認爲這是一個塔架bug(它對內容長度的傲慢態度!),但顯然塔架作者在該分數上不同意我的看法,所以很高興至少有解決方法! - )

+0

謝謝,亞歷克斯,中間件作品的那一點。我甚至不需要修改它 - 因爲無論如何我無法讓「流式傳輸」工作,調用'len(body)'返回正確的值。不過,我不確定爲什麼這麼簡單的事情需要一些「中間件」。 恭喜擊中100K,順便說一句! – EMP 2010-05-06 04:20:02

+0

@evgeny,如果你能說服Pylons的提交者說內容的長度應該總是被返回,你就會贏得包括我在內的每個人的感激 - 但看起來他們還是相信了。感謝恭喜! - ) – 2010-05-06 04:23:40

+0

好吧,不要介意「永遠」,但至少如果我手動將它設置在標題中它應該被返回! – EMP 2010-05-06 23:01:35

0

嘗試:

response.headerlist.append((str("Content-Length"), str(" 123456"))) 
+0

不,那不行,對不起。 – EMP 2010-05-06 03:58:42

相關問題