2011-05-07 74 views
3

我鍛鍊與HTML客戶一個簡單的應用程序將文件上載到服務器,並必須顯示進度條:)如何通過多部分表單數據上傳時知道文件大小?

服務器是servlet的基礎,一些servlet接收到多內容,對其進行解析等。顯然,在任何時候,我都知道迄今收到的字節數。但是,爲了提供客戶端進度條的信息,servlet還需要正在上傳的文件的總字節數。任何想法從哪裏得到總字節數?

謝謝!

回答

1

內容大小被放置在內容長度標頭中(見rfc2616)。在Servlet中,您可以通過request.getContentLength()reqest.getHeaders("Content-Length")

+0

謝謝,只有一個問題:如果我請求完整的Content-Length(並且只有一個文件正在上傳),那麼這個長度是否也會計算其他文本表單域? – BreakPhreak 2011-05-07 12:12:50

+2

是的。內容長度包括其他字段的大小。我建議您使用Apache File Upload lib來解析Http請求。 – ilalex 2011-05-07 12:30:33

+2

因此,這個答案在技術上並不正確...... HTTP頭(在POST請求中只有一個)「Content-Length」是可選的,此外還包括所有的表單字段,開銷字節等等。 FILE部分的大小(這是OP詢問的內容)。簡而言之,HTTP頭「Content-Length」不等於上傳文件的大小。可悲的是,正確的答案非常複雜。 – 2016-05-19 22:22:06

2

我認爲你必須在客戶端的javascript中實現進度條。

無論如何,this link給出瞭如何使用JQuery進行解釋。


服務器可以從HTTP請求頭中獲取正在上傳的多部分的大小;請參閱@ ilya的答案。但是,將該信息和字節計數讀入到顯示或更新進度條的HTTP響應流中會相當複雜...

+0

獲得此標頭的值。當然,我將在客戶端使用JS。不過謝謝您的幫助。 – BreakPhreak 2011-05-07 12:23:00

+1

我想你錯過了我的觀點。客戶端需要**度量**。 – 2011-05-07 13:47:48

+0

啊,謝謝澄清。我認爲對於我的代碼服務器端測量將足夠好。 – BreakPhreak 2011-05-07 15:54:38

相關問題