在 Java servlet 容器中获取上传文件夹

Getting the upload folder in a Java servlet container

可能是个愚蠢的问题,但是...

我有一个基于 Spring 的 WAR 应用程序,它在 Tomcat 上运行 80% 的安装,其余 20% 在 WebSphere 上运行。

我只需要获取 Spring 的 MultipartFilter(使用 Commons 多部分解析器)存储正在上传的文件的文件夹路径。我从来没有手动设置过它,它实际上属于我在 Tomcat 安装中发现的 Catalina 工作目录。

目前,我只需要找到那条路。我可以控制我的应用程序,因此没有人会在未通知的情况下更改它。

我想知道是否有一种与服务器无关的方法来了解我的基于 Spring 的应用程序将存储多部分文件的位置。

例如从 this question 我可以看到我可以使用 catalina.base,但在 Tomcat... 中不能在 JBoss 或 WebSphere 中使用。它可能会花费我几个 if/else 语句...

Spring 已经尝试这样做 当没有设置默认值时

WebUtils.getTempDir(servletContext)

这只是:

return ((File)servletContext.getAttribute("javax.servlet.context.tempdir"));

所以简单地说,如果没有人覆盖过滤器属性中的那个位置(这就是我的情况),我可以依赖默认值。

更一般地说,可能必须检查 DiskItemFileFactory 的实例才能获得 repository

的路径