正如標題所說,我需要獲取發佈爲multipart/form-data
請求的文件的真實文件大小。如何在多部分/表單數據請求中獲取文件的實際文件大小
我基於JSF世界,但我認爲問題是技術不可知的(僅取決於HTTP)。
Content-Length標頭中指定的值是不夠的,因爲它包含邊界和其他表單參數。
實施例請求(僅機身):
-----------------------------355432893771247592819421210
Content-Disposition: form-data; name="composeform"
composeform
-----------------------------355432893771247592819421210
Content-Disposition: form-data; name="javax.faces.ViewState"
-9107117821100047188:3613431652649065231
-----------------------------355432893771247592819421210
Content-Disposition: form-data; name="file"; filename="3byte.txt"
Content-Type: text/plain
abc
-----------------------------355432893771247592819421210--
請求體的最後部分包含文件,在這種情況下,命名爲「3byte.txt」包含字符「ABC」的文件。
正如你可以看到,文件大小不包括在該請求,因此,我見得到的價值的唯一途徑,是一種基於內容長度標題和邊界的大小來計算的話和其他表單參數。
附加要求:
- 解決方案不應該讀/解析整個請求來獲取文件大小(這顯然很容易)
- 有可能在多個表單參數要求,之前和/或
類似的問題,不解決這個問題包含文件(相對於我的例子)之後的部分:
- How to know the file size when uploading via multipart form-data?
- Get file size from multipart form upload Content-Length header
- Calculate size multipart/form-data encoded file
它看起來確實沒有標準的解決方案,因此我現在接受這個答案。 – unwichtich