我正在构建一个用于上传内容的网络应用程序。目前,我正在使用一个属性文件,我在其中定义了一些变量,其中包含我希望存储文件的某些文件夹的路径。这些路径指的是我文件系统中的文件夹。
P1:由于我想让我的应用程序更具可移植性,我决定将上传的内容存储在项目类路径中的某个文件夹中,但我在占位符中使用的路径不起作用。
#path.images=C:/uploads/images
#path.images=classpath:/webapp/uploads/images (NOT working)
Q1:如果可能的话,我想知道我是否将内容存储在正确的位置(在 webapp 目录中)。
注意:我正在进行这些更改,因为我正在尝试将FileInputStream
替换为getResourceAsStream()
。
非常感谢任何帮助。
答案 0 :(得分:3)
没有;未与应用程序一起部署的资产应存储在其他位置。
通常这类资产属于可配置的外部目录。配置机制包括JNDI,context / init参数,环境变量或系统变量。
由于多种原因,将资产保留在Web应用程序中是一个坏主意,最大的原因是:
将它们保存在一个已知良好的位置,然后将它们流回,通过容器配置访问权限,或使用任何各种CDN机制来提供访问权限。
答案 1 :(得分:0)
您无法在类路径中存储数据 - 它是只读的。
为了获得最大的可移植性,您应该避免将数据存储在文件系统中(例如,在集群方案中,您需要确保所有节点上的文件系统相同)。