一尘不染

从java类文件获取apache webcontents文件夹的绝对路径

jsp

需要在动态Web应用程序内的Java类文件中获取绝对路径…

  • 实际上我需要获取apache webapps文件夹的路径…在其中部署webapps

  • 例如 /apache-root/webapps/my-deployed-app/WebContent/images/imagetosave.jpg

  • 需要在Java类文件中获取此文件,而不是在jsp页面或任何视图页面上…

有任何想法吗?


阅读 309

收藏
2020-06-08

共1个答案

一尘不染

实际上我需要获取apache webapps文件夹的路径…在其中部署webapps

例如/apache-root/webapps/my-deployed-app/WebContent/images/imagetosave.jpg

如许多其他答案所提到的,您可以仅ServletContext#getRealPath()将相对的Web内容路径转换为绝对磁盘文件系统路径,以便可以在File或中进一步使用它FileInputStream。该ServletContext是通过继承获得的servlet
getServletContext()方法:

String relativeWebPath = "/images";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
File file = new File(absoluteDiskPath, "imagetosave.jpg");
// ...

但是 ,文件名“
imagetosave.jpg”表示您正在尝试通过来存储上载的图像FileOutputStream。公共webcontent文件夹是存储上载图像的
错误 位置!每当重新部署Web应用程序时,甚至清理服务器后,它们都将丢失。原因很简单,上载的图像根本不包含在要部署的WAR文件中。

您绝对应该在webapp部署文件夹 之外
寻找另一个位置,以更永久地存储上载的图像,以便在多次部署/重新启动后,该位置保持不变。最好的方法是准备一个固定的本地磁盘文件系统文件夹,例如,/var/webapp/uploads并将其提供为某些配置设置。最后,将图像存储在那里。

String uploadsFolder = getItFromConfigurationFileSomehow(); // "/var/webapp/uploads"
File file = new File(uploadsFolder, "imagetosave.jpg");
// ...
2020-06-08