UJCMS将上传文件保存到其它目录

2022-07-12 11:55 阅读

上传的文件默认保存在系统的/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>

另外“访问路径”也是可以修改的,只要确保该访问路径能够访问到相应的文件。

QQ咨询
电话
微信
微信扫码咨询