以下代码返回war文件夹的路径(即/ ROOT /):
getServletContext().getRealPath("/");
我需要从这一点开始使用一个文件夹,我该怎么做呢?
我尝试了以下内容:
final String path = getServletContext().getRealPath("./");
final String path2 = getServletContext().getRealPath("../");
final String path3 = getServletContext().getRealPath(".../");
我需要保存ROOT文件夹之外的文件,但只有一级,所以每次我更新我的网站时,它都不会替换ROOT文件夹中的物理上传文件,而只是触摸网页网站文件。
由于
答案 0 :(得分:0)
我们甚至不知道您的WAR文件是否已解压缩:Tomcat可以在不解压缩的情况下部署它们,这样您就可以使用非文件系统路径。
正如评论中所讨论的,执行此操作是不好的做法,您应该确定存储数据的位置 - 例如:数据库,外部存储,文件系统中的某个位置。然后,“只是”通过您的Web应用程序为这些文件提供单独的下载选项 - 单独或压缩。
答案 1 :(得分:0)
您可以使用的另一种解决方案是指向外部文件夹的符号链接。
您可以在项目外侧创建一个文件夹,例如在tomcat路径中的webapps文件夹的同一级别上。
我们将为该示例命名上传。
现在,在您的部署脚本中(假设您有一个),您可以轻松地创建从uploads文件夹到项目内文件夹的符号链接。 它允许您从项目内部获取文件,当您重新部署时,文件不会被删除。
例如:
ln -s /var/lib/tomcat6/uploads /var/lib/tomcat6/webapps/myWebApp/uploads
以上示例适用于我的tomcat6发行版,但您可以更改路径以使用您的设置。
这个答案使用了3个假设:
Liron
答案 2 :(得分:-1)
您必须在战争的位置使用File的API。
File root = new File(getServletContext().getRealPath("./"));
String parent = root.getParent();
String parentParent = new File(parent).getParent();