需要在动态Web应用程序内的Java类文件中获取绝对路径…
实际上我需要获取apache webapps文件夹的路径…在其中部署webapps
例如 /apache-root/webapps/my-deployed-app/WebContent/images/imagetosave.jpg
需要在Java类文件中获取此文件,而不是在jsp页面或任何视图页面上…
有任何想法吗?
实际上我需要获取apache webapps文件夹的路径…在其中部署webapps 例如/apache-root/webapps/my-deployed-app/WebContent/images/imagetosave.jpg
例如/apache-root/webapps/my-deployed-app/WebContent/images/imagetosave.jpg
如许多其他答案所提到的,您可以仅ServletContext#getRealPath()将相对的Web内容路径转换为绝对磁盘文件系统路径,以便可以在File或中进一步使用它FileInputStream。该ServletContext是通过继承获得的servlet getServletContext()方法:
ServletContext#getRealPath()
File
FileInputStream
ServletContext
getServletContext()
String relativeWebPath = "/images"; String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath); File file = new File(absoluteDiskPath, "imagetosave.jpg"); // ...
但是 ,文件名“ imagetosave.jpg”表示您正在尝试通过来存储上载的图像FileOutputStream。公共webcontent文件夹是存储上载图像的 错误 位置!每当重新部署Web应用程序时,甚至清理服务器后,它们都将丢失。原因很简单,上载的图像根本不包含在要部署的WAR文件中。
FileOutputStream
您绝对应该在webapp部署文件夹 之外 寻找另一个位置,以更永久地存储上载的图像,以便在多次部署/重新启动后,该位置保持不变。最好的方法是准备一个固定的本地磁盘文件系统文件夹,例如,/var/webapp/uploads并将其提供为某些配置设置。最后,将图像存储在那里。
/var/webapp/uploads
String uploadsFolder = getItFromConfigurationFileSomehow(); // "/var/webapp/uploads" File file = new File(uploadsFolder, "imagetosave.jpg"); // ...