我查看了 Spring CommonsMultipartResolver 代码。它使用 apache 文件上传来解析多部分数据。 CommonsMultipartResolver 已将默认缓冲阈值设置为 10kB 并使用 DiskFileItemFactory 创建 FileItem。如果 Stream 大于 10kB,FileItem 将被写入磁盘。您还可以更改存储库文件夹的位置以存储临时上传的文件项。
是否应该有不同的文件大小限制和总请求大小
限制或文件大小是唯一的
限制和请求是有能力的
上传 100 多个文件的时间
它们不是太大。
我不知道您可以发送的多部分数据中的最大部分数量限制或 Spring CommonsMultipartResolver 的限制,但因为它使用 Apache FileUpload,我认为它们应该是相同的限制。我使用 Apache FileUpload(没有 Spring)来接收大于 3GB 的多部分流,它包含 2 个文件,20MB 和 3.6GB。虽然,我不能给你确切的限制,但它应该能够处理几 GB 的流。
Spring 请求包装器是否读取完整的请求并存储它
在 JAVA 堆内存中或它存储
它的临时文件能够
使用大配额。
正如我之前解释的,CommonsMultipartResolver 使用 Apache FileUpload。 FileItem 是使用 DiskFileItemFactory 创建的,因此 FileItem 会临时保存到磁盘。默认内存阈值为 10kB。
在流式传输中使用读取 httpservlet 请求会
更改大小限制而不是使用
完成一次读取的http请求
应用服务器。
对不起,我无法回答这个问题。流式传输中的 httpservlet 请求和一次性读取的 http 请求有什么区别?
这个过程的瓶颈是什么
- Java 堆大小,我的 Web 服务器所在的文件系统的配额
运行,最大允许的 BLOB 大小
我要在其中的数据库
保存文件吗?或弹簧
内部限制?
一般速度瓶颈可以按以下顺序排序:网络
可以在启动 servlet 容器之前更改 Java 堆大小。 2^64 是 JVM 64 位的理论限制。
对于文件系统的配额,它取决于文件系统,例如FAT32 允许您的最大文件大小为 4GB、NTFS 16TB、EX3 16GB-2TB 等。
根据ibm,BLOB 限制应该是 2GB。
我不知道 Spring 内部限制。但是 Apache FileUpload 应该能够毫无问题地处理几 GB 的流。