我想在我的网站上提供上传功能。我无法在战争中保存上传的图像。我可以将它保存到我的机器上的某个特定位置并从那里引用它。 问题是我必须使这个代码兼容Windows机器,Mac和Openshift服务器。因此,图像文件夹的路径在不同的机器上会有所不同。
我想的解决方法是以某种方式在不同机器上的tomcat服务器中配置images文件夹位置并从那里读取它。有没有办法在tomcat中配置变量? 还有什么更好的解决方案可以解决这个问题吗?
答案 0 :(得分:1)
选项1
您可以在上下文配置文件中定义环境变量。
<Context>
<Environment name="myapp.upload.dir" type="java.lang.String" value="/srv/app/upload" override="true" />
</Context>
您可以为您的应用程序创建新的上下文文件,也可以将环境条目放在$TOMCAT_HOME/conf/context.xml
中,在这种情况下,Tomcat实例中运行的所有应用程序都可以访问此属性。 Here是关于上下文的Tomcat文档。
要访问变量值,您可以使用以下代码:
InitialContext ctx = new InitialContext();
String uploadDir = (String) ctx.lookup("java:comp/env/myapp.upload.dir");
选项2
您可以在$TOMCAT_HOME/bin/setenv.sh
(或Windows上的$TOMCAT_HOME\bin\setenv.bat
)中将其指定为JVM属性,并像这样检索它:
System.getProperty("myapp.upload.dir");
我个人认为第一种解决方案更清洁。
另外作为最后一点,我不认为这个解决方案是一种解决方法。在某种配置文件中指定上传目录之类的东西是完全可以接受的解决方案,而不是有一个适用于所有平台但不能更改的固定位置(例如$HOME/app/upload
)。