上传的文件默认保存在系统的 /uploads
目录下。可在 配置 - 全局设置 - 附件存储点
中设置:
这个目录是相对于程序根目录的,如程序部署在 D:/tomcat/webapps/ROOT
目录下,上传的文件则保存在 D:/tomcat/webapps/ROOT/uploads
目录下。
如果希望将上传的文件保存在程序以外的目录,则需要使用到 file:
前缀。如 file:D:/tomcat/webapps/uploads
。
为了防止输入任意目录,导致服务器敏感文件被访问,需要在 /WEB-INF/classes/application.yaml
(源码为 /src/main/resources/application.yaml
)文件中,配置 ujcms.storageFilePrefix
项目。配置后需重启 tomcat。
# 储存点文件前缀。配置该项可以允许储存点使用`file:`前缀访问程序的其它目录及其子目录。多项使用逗号分割。如 file:/data/ujcms,file:d:/my/dir
ujcms.storageFilePrefix: D:/tomcat/webapps/uploads
需要注意的是,D:/tomcat/webapps/uploads
目录依然在tomcat的webapps目录下,也意味着这个目录下的文件可以通过tomcat访问到,而且和“访问路径” /uplodas
是一致的。
但如果将文件放到其它非 tomcat/webapps 的目录下,则需要对 tomcat 进行配置,确保 tomcat 可以访问到该目录,或者另外配置 nginx 访问该目录,而且要和“访问路径”的设置一致。
下面以tomcat的配置为例,将上传的附件保存到 D:/other/dir/uploads
。
修改 tomcat 的 server.xml 里的 Host、Context 配置,可以实现 Tomcat 之外的 /uploads 文件夹可访问。
<Host ...>
<Context path="/uploads" docBase="D:/other/dir/uploads" />
</Host>
另外“访问路径”也是可以修改的,只要确保该访问路径能够访问到相应的文件。