【问题标题】:Spring Boot External Tomcat File UploadSpring Boot 外部 Tomcat 文件上传
【发布时间】:2021-05-16 03:46:16
【问题描述】:

Spring Boot 文件上传应用程序部署在外部 tomcat 上。并在application.properties 中设置以下属性,即使它使用tomcat tomcat-home/temp/spring-multipart 目录上传

spring.servlet.multipart.location=C:\\temp

上述属性不是用于外部tomcat吗?如果不是解决方案,如何创建临时文件夹并定期清理它。

上传文件时,它始终使用tomcat-home/temp/spring-multipart 目录,临时文件不会被删除。

Spring Boot:2.4

【问题讨论】:

  • 您的问题存在不一致:错误消息似乎来自 UNIX 系统,而您的配置指定了 Windows 路径。你用的是哪个系统?
  • @PiotrP.Karwasz 抱歉,我尝试了多种方法/temp/uc01/temp
  • @PiotrP.Karwasz 我已经编辑了这个问题。实际上,在 Linux 中,我遇到了异常,所以后来尝试研究如何手动设置临时文件夹并在 Windows 中清理它。

标签: java spring-boot tomcat8


【解决方案1】:
spring.servlet.multipart.location=C:\\temp

只有在你使用嵌入式 tomcat 时才会有效果。

启动tomcat时必须使用-Djava.io.tempdir更改临时目录位置https://serverfault.com/a/13698/378967

【讨论】:

  • 是否可以针对特定应用进行设置?如何清理临时文件夹?
  • 好吧,你只需清理它。这里没有魔法。至于目录/应用程序 - 我不知道
  • 如果您担心临时上传的文件,根本不需要清理:Tomcat 会在请求完成后立即删除这些文件。
  • @PiotrP.Karwasz,但在 Windows 中,临时文件一旦上传就不会被删除
  • 我检查了 *nix 和 Windows(在最近的 Tomcat 9.0 上):Tomcat 创建的文件(命名为upload_7ea881f7_b695_4b33_a2e3_56c8b174e0d0_00000001.tmp)保存在您提供的目录中,并在请求完成后删除服务。你用的是什么版本的Tomcat?还是您在谈论由您的代码创建的文件?
猜你喜欢
  • 2015-06-26
  • 1970-01-01
  • 2016-03-28
  • 2015-06-19
  • 2015-09-03
  • 1970-01-01
  • 2016-07-29
  • 2017-11-24
  • 2017-05-11
相关资源
最近更新 更多