我正在构建一个用于上传内容的网络应用程序。目前,我正在使用一个属性文件,在其中定义一些变量,其中包含我想要存储文件的一些文件夹的路径。这些路径引用我的文件系统中的文件夹。
P1:由于我想让我的应用程序更加便携,因此我决定将上传的内容存储在项目类路径内的某个文件夹中,但我在占位符中使用的路径不起作用。
#path.images=C:/uploads/images
#path.images=classpath:/webapp/uploads/images (NOT working)
问题1:如果可能的话,我想知道我是否将内容存储在正确的位置(在 webapp 目录内)。
注意:我进行这些更改也是因为我试图替换 FileInputStream
与 getResourceAsStream()
.
任何帮助将不胜感激。
最佳答案
没有;未与应用程序一起部署的 Assets 应存储在其他地方。
通常,这样的资源应该属于可配置的外部目录。配置机制包括 JNDI、上下文/初始化参数、环境变量或系统变量。
将 Assets 保留在 Web 应用程序中并不是一个好主意,原因有多种,其中最大的原因是:
- 如果应用程序部署为 war 文件,您无论如何都无法写入 war 文件,并且
- 您的 Assets 受部署机制的支配,并且可能会被覆盖。
将它们保存在已知良好的位置,然后将它们流式传输回来,通过容器配置访问权限,或使用各种 CDN 机制中的任何一种来提供访问权限。
关于Java占位符: reference to webapp folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585056/