如果我使用HTTP多部分内容类型上传一个客户端表单子目录中的文件列表,我想知道大小限制是什么。
在服务器端,我使用Spring的MultipartHttpServletRequest
来处理请求。
mM问题:
仍然没有确切答案的相关主题:
答案 0 :(得分:2)
我查看了Spring CommonsMultipartResolver
代码。它使用apache文件上传来解析多部分数据。 CommonsMultipartResolver
已将默认缓冲阈值设置为10kB,并使用DiskFileItemFactory
创建FileItem。如果Stream大于10kB,则FileItem
将写入磁盘。您还可以更改存储库文件夹的位置以存储临时上载的文件项。
是否应该有不同的文件大小限制和总请求大小 限制或文件大小是唯一的 限制和请求是有能力的 以lonng为单位上传100个文件 它们不是太大。
我不知道您可以发送的多部分数据中的部件数量的最大限制是什么,或者Spring CommonsMultipartResolver
的限制,但是因为它使用Apache FileUpload,我认为它们应该是相同的限制。我使用Apache FileUpload(没有Spring)来接收大于3GB的多部分流,它包含2个文件,20MB和3.6GB。虽然,我不能给你确切的限制,它应该能够处理几GB的流。
Doest Spring请求包装器读取完整的请求并存储它 在JAVA堆内存或它的存储中 它的temporaray文件能够 使用大额配额。
正如我之前解释的那样,CommonsMultipartResolver
使用Apache FileUpload。 FileItem
是使用DiskFileItemFactory
创建的,因此FileItem
会临时保存到磁盘。沉默的记忆阈值是10kB。
是否使用在流中读取httpservlet请求 改变尺寸限制而不是使用 完整的http请求一次性读取 应用程序服务器。
抱歉,我无法回答这个问题。流中的httpservlet请求和一次性读取http请求之间有什么不同?
这个过程的瓶颈是什么? - Java堆大小,我的Web服务器所在的文件系统的配额 运行,允许的最大BLOB大小 我想要的DataBase 保存文件alows?或春天 内部限制?
通用速度瓶颈可按以下顺序排序:网络<文件IO<存储器
在启动servlet容器之前,可以更改Java堆大小。 2 ^ 64是JVM 64位的理论限制。
对于文件系统的配额,它取决于文件系统,例如FAT32允许您拥有4GB的最大文件大小,NTFS 16TB,EX3 16GB-2TB等。
根据ibm,BLOB限制应为2GB。
我不知道Spring的内部限制。但Apache FileUpload应该能够毫无问题地处理几GB的流。