Tomcat Servlet 3.0 多部分文件上传临时文件夹中的名称冲突

Tomcat Servlet 3.0 multipart file upload name clash in temp folder

似乎 Tomcat 没有处理两个不同用户并行上传同一个多部分文件。

测试

结果

有没有办法避免这种情况 - 除了将 fileSizeThreshold 设置为高于 maxFileSize 以便它永远不会首先写入磁盘。

旁注:这是一个 Spring Boot 2.1 应用程序,但这无关紧要,因为它默认使用此 Servlet 3.0 实现。

我有一个答案,但不是很满意。我们没有弄清楚如何使用 Tomcat 的 Servlet 3.0 实现来实现这一点。但是,一旦我们切换到 Apache commons-fileupload,一切都很好。

所以,对于 Spring (Boot) applications 你会

  • 设置spring.servlet.multipart.enabled: false
  • 配置一个 CommonsMultipartResolver 类型的 bean,名称为 multipartResolver
  • 添加 commons-fileupload 依赖项