文件上传路径转虚拟路径

传统方式:文件上传路径放在项目目录之下/WebRoot/WEB-INF下,这个目录是从外部的客户端通过URL是无法访问的,所以文件也是相对比较安全的。但是这样对于部署有一个很大的问题,就是将打包好的war包放到tomcat中之后,原先/WebRoot/WEB-INF下的上传文件全都被覆盖了,导致文件全部丢失,这样每次部署的时候都很麻烦。

通过在tomcat安装目录中的conf文件夹下的server.xml文件中配置一个新的context内容,这个标签添加在host标签之内。

<Context docBase="D: est" path="/test" reloadable="true"/>

其中docBase表示的是实际的保存地址,path表示的是在tomcat中的路径标识,同时可以在java后台中使用这个配置好的path访问实际的地址,而因为这个实际地址可以是不在项目之内的,这样就可以避免每次部署的时候文件丢失的问题。

同时假设D: est下有一个a.txt,由于配置的path变量,则可以用过localhost:8080/test/a.txt访问到。所以这种方式没有传统方式安全,不过可以通过给文件加上唯一的id前缀避免因为URL太过简单而被外部访问。

eg:

配置<Context path="/cul" docBase="C:/xy_cul" reloadable="true"/>后:

http://localhost:8080/rul=C:/xy_cul

用这个地址就可以访问图片了:

http://localhost:8080/rul/file/jpg/2020/2020-01/5hNc6Mhufvm5nRak1NlzQLPhdGl6r0BmmLzCkdgLArE9NhjLQIGIcBLiufHQggnI/a.jpg

注意:设置的docBase对应的实际目录一点要存在,如果不存在,那么tomcat启动时就会出现闪退。因为有的项目可能是通过项目生成目录,这个时候就有可能出现启动tomcat时实际的地址还不存在,这样就会无法启动闪退。
————————————————
版权声明:本文为CSDN博主「baowei_0915」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baowei_0915/article/details/80645752

原文地址:https://www.cnblogs.com/fxx5/p/12156292.html