【发布时间】:2015-12-09 16:57:31
【问题描述】:
正如标题所说,我需要获取作为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”。
如您所见,文件大小不包含在请求中,因此我看到获取值的唯一方法是根据 Content-Length 标头和大小边界和其他表单参数。
其他要求:
- 解决方案不必读取/解析整个请求来获取文件大小(这显然很容易)
- 请求中可能有更多的表单参数,在包含文件的部分之前或/之后(与我的示例相反)
没有解决问题的类似问题:
【问题讨论】:
标签: file-upload http-headers multipartform-data