如何在多部分/表单数据请求中获取文件的实际文件大小

不重要

如标题所示,我需要获取作为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标头,边界大小和其他表单参数来计算它

其他要求:

  • 解决方案不必读取/解析整个请求即可获得文件大小(这显然很容易)
  • 在包含文件的部分之前或之后,请求中可能有更多表单参数(与我的示例相反)

无法解决问题的类似问题:

CouchDeveloper
  1. 您不能期望为multipart消息设置Content-Length标头(某些多部分请求类型甚至禁止使用内容长度标头)。它仅需要Content-Length标头Transfer-Encoding标头是否存在。

  2. Content-Length多部分邮件的一部分中不得有标头。

但是,您的发送者可以在处置标头中设置其他参数。您可以利用它来设置文件大小,如下所示:

Content-Disposition: form-data; name="file"; filename="3byte.txt"; size=123

但这纯粹是可选的,参数的名称可以是任意的,并且不需要发送者包括此参数。这意味着HTTP服务器引擎永远不能依赖它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AngularJS如何上传多部分表单数据和文件?

在XPage ServiceBean中无法获取多部分/表单数据POST请求的正文上的句柄

如何在Java Servlet中处理多部分/表单数据POST请求?

如何在HTTP请求中发送多部分表单数据(用于Watson NLC培训)?

使用HTTPWebrequest上传文件(多部分/表单数据)

卷曲如何发布多部分/表单数据数据以及如何在Flask请求中读取多部分/表单数据

文件上传API:主体中的多部分/表单数据与原始内容?

在Flask中上传文件,无需多部分/表单数据

尝试通过执行PUT请求的API上传模型时文件丢失-多部分/表单数据请求-Laravel / PHP

如何在Swift4中通过具有多个参数的多部分表单数据上传图像或文件

如何在Retrofit2 Android中解析来自多部分表单数据请求的响应

如何从多部分表单数据中获取Node JS中间件中的请求正文?

多部分/表单数据请求-上载pdf导致空白文件

如何使用go的net / http或类似方法保存在多部分/表单数据POST请求中收到的文件?

将文件从AWS Lambda(Python)中的多部分/表单数据上传到S3

带有resteasy和多部分/表单数据请求的最大文件大小

如何在ajax中发送多部分/表单数据请求

如何在提琴手中拦截多部分/表单数据并访问作为请求一部分的二进制文件

如何在PHP上使用curl发出文件的多部分/表单数据请求和重复键

如何在C#MVC 4 Web服务中使用多部分/表单数据请求

请求:发布多部分/表单数据

如何在wicket中解析多部分表单数据

多部分表单数据是如何工作的?

如何在 NodeJs/ExpressJs 中解析多部分表单,其中文件嵌套在表单数据中?

多部分表单数据请求无法调用大文件

使用 PowerShell 上传多部分/表单数据文件

如何区分空文件和丢失文件的多部分表单数据?

使用 UploadFile 进行直接文件上传,无需多部分/表单数据请求

如何获取多部分/表单数据?