gpt4 book ai didi

java - 使用Spring 3.0的MultipartHttpServletRequest时的请求大小限制

转载 作者:搜寻专家 更新时间:2023-11-01 03:29:25 26 4
gpt4 key购买 nike

如果我使用 HTTP 多部分内容类型在一个客户的表单提交中上传文件列表,我想知道大小限制是多少。在服务器端,我使用 Spring 的 MultipartHttpServletRequest 来处理请求。毫米问题:

  1. 是否应该有不同的文件大小限制和总请求大小限制,或者文件大小是唯一的限制,并且请求能够上传 100 多个文件,只要它们不太大。
  2. Spring 请求包装器是读取完整的请求并将其存储在 JAVA 堆内存中,还是存储它的临时文件以便能够使用大配额。
  3. 与使用应用程序服务器一次读取完整的 http 请求相比,使用流式读取 httpservlet 请求是否会改变大小限制。
  4. 此过程的瓶颈是什么 - Java 堆大小、运行我的 Web 服务器的文件系统的配额、我要保存文件的数据库允许的最大 BLOB 大小?还是 Spring 的内部限制?

相关主题仍然没有确切的答案:

最佳答案

我研究了 Spring CommonsMultipartResolver 代码。它使用 apache 文件上传来解析多部分数据。 CommonsMultipartResolver 已将默认缓冲阈值设置为 10kB 并使用 DiskFileItemFactory 创建 FileItem。如果流大于 10kB,FileItem 将写入磁盘。您还可以更改存储库文件夹的位置以存储临时上传的文件项。

Is there should be different file size limitation and total request size limitation or file size is the only limitation and the request is capable of uploading 100s of files as lonng as they are not too large.

我不知道您可以发送的多部分数据中的最大部分数量限制是多少,也不知道 Spring CommonsMultipartResolver 的限制是多少,但是因为它使用 Apache FileUpload,所以我认为它们应该是相同的限制.我使用 Apache FileUpload(没有 Spring)来接收大于 3GB 的多部分流,它包含 2 个文件,20MB 和 3.6GB。虽然,我不能给你确切的限制,但它应该能够处理几 GB 的流。

Doest the Spring request wrapper read the complete request and store it in the JAVA heap memory or it store temporaray files of it to be able to use big quota.

如前所述,CommonsMultipartResolver 使用 Apache FileUpload。 FileItem 是使用 DiskFileItemFactory 创建的,因此 FileItem 会临时保存到磁盘。默认内存阈值为 10kB。

Is the use of reading the httpservlet request in streaming would change the size limitation than using complete http request read at-once by the application server.

抱歉,我无法回答这个问题。 streaming 中的 httpservlet 请求和一次读取的 http 请求有什么区别?

What is the bottleneck of this process - Java heap size, the quota of the filesystem on which my web-server runs, the maximum allowed BLOB size that the DataBase in which I am gonna save the file alows? or Spring internal limitations?

一般速度瓶颈可以按以下顺序排序:网络 < 文件 IO < 内存

Java 堆大小可以在启动 servlet 容器之前更改。 2^64 是 JVM 64 位的理论限制。

对于文件系统的配额,它取决于文件系统,例如FAT32 允许您拥有最大文件大小 4GB、NTFS 16TB、EX3 16GB-2TB 等。

根据ibm , BLOB 限制应为 2GB。

我不知道 Spring 内部限制。但是 Apache FileUpload 应该能够毫无问题地处理几 GB 的流。

关于java - 使用Spring 3.0的MultipartHttpServletRequest时的请求大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com