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

不重要

如标题所示,我需要获取作为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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何使用发布多部分/表单数据的请求来排列数据和文件的顺序?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何在Azure Function中接收多部分表单数据?

来自分类Dev

多部分表单POST提交请求,获取损坏的文件

来自分类Dev

HTML.BeginForm多部分/表单数据文件上传表单组验证

来自分类Dev

南希:解析“多部分/表单数据”请求

来自分类Dev

这是格式正确的多部分/表单数据请求吗?

来自分类Dev

解析从请求发布接收的多部分/表单数据

来自分类Dev

多部分/表单数据请求失败。直播意外结束

来自分类Dev

如何使用 org.glassfish.jersey.media.multipart 从 Java 将内容和文件作为多部分表单数据发送?

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

    如何使用发布多部分/表单数据的请求来排列数据和文件的顺序?

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

    如何在Azure Function中接收多部分表单数据?

  23. 23

    多部分表单POST提交请求,获取损坏的文件

  24. 24

    HTML.BeginForm多部分/表单数据文件上传表单组验证

  25. 25

    南希:解析“多部分/表单数据”请求

  26. 26

    这是格式正确的多部分/表单数据请求吗?

  27. 27

    解析从请求发布接收的多部分/表单数据

  28. 28

    多部分/表单数据请求失败。直播意外结束

  29. 29

    如何使用 org.glassfish.jersey.media.multipart 从 Java 将内容和文件作为多部分表单数据发送?

热门标签

归档