将Web应用程序中的文件上载到项目根文件夹

Car*_*rel 1 java directory tomcat file-upload web-applications

我目前正在开发一个Web应用程序.在这个应用程序的某些部分,我想将文件上传到某个目录.最初,当我编写我的测试用例时,这非常有效:

final static String IMAGE_RESOURCE_PATH = "res/images";

...

File directory = new File(IMAGE_RESOURCE_PATH + "/" + productId);

if(!directory.exists()) {
    directory.mkdirs();
}
Run Code Online (Sandbox Code Playgroud)

这将创建将上载文件的目录.生成的路径将是:

[项目根文件夹]/res/images/[productId]

自从将应用程序部署到服务器(Tomcat 7)后,该目录就会在我正在使用的IDE的根目录中创建,这对我来说有点混乱.

例如:C:\ Eclipse86\res\images

知道如何在不使用某些黑客攻击技术或硬编码路径的情况下使用普通Java恢复项目路径吗?

Art*_*nov 5

如果未指定绝对路径,则将在应用程序的工作目录内(或者,如果正确地,相对于)创建目录.

如果要在Web应用程序中获取目录,则应使用getServletContext().getRealPath(String path).例如,getServletContext().getRealPath("/")是应用程序根目录的路径.

要使用path创建目录[project root folder]/res/images/[productId],请执行以下操作:

// XXX Notice the slash before "res"
final static String IMAGE_RESOURCE_PATH = "/res/images";

...

String directoryPath = 
        getServletContext().getRealPath(IMAGE_RESOURCE_PATH + "/" + productId)
File directory = new File(directoryPath);

if(!directory.exists()) {
    directory.mkdirs();
}
Run Code Online (Sandbox Code Playgroud)