前言:
-
我们在web项目中经常有上传图片的功能,上传的图片存在哪里呢?
-
存储方式一般有:存入数据库中,跟随项目相对路径中,还有就是再专门设计一个图片服务器用于图片处理。
-
当图片量大的时候,或者查询数据量大的时候,非常的影响性能,数据库显然不太推荐使用。
-
对于小项目来说,再另外特地为图片操作开一个服务也不太现实,维护等也都比较麻烦。
-
在小项目中,对于每一个体验用户,上传的图片可能需要属于个人信息的一部分,所以图片显然不能存在页面的伴随的静态资源img里面,但是凡是懂点点的人都可以在浏览器中查看资源找到所有图片,并且当图片多了的时候每次加载都会很慢。我们还希望不是存在本地的某个非tomcat之外路径(因为当项目上线之后环境可能不是本机了(可能是云服务器)),所以我们希望图片伴随项目,所以我们选择保存在WEB_INF下的文件夹中。
如何解决?
-
那么问题来了,我们会发现每次重新部署项目时图片文件夹会消失,导致图片文件丢失。为什么呢?
-
问题就出在,项目访问之前都会将项目打包好扔进去tomcat weapp 中,项目访问都是访问部署好在 tomcat webapp 下的项目,然而每次上传图片都是存储在webapp 下部署的项目中的WEB_INF 文件夹下,但是重新部署项目之后,原来的源项目中并没有创建图片文件夹这时候,将它部署到 tomcat 中后将原来的项目替换覆盖了。所以它图片就消失了。
-
最后我们选择的是保存在当先web项目外,web项目运行环境内,也就是tomcat的安装目录下的webapp(与部署的项目)同级下创建一个专门用于存储图片资源的文件夹中。
-
在存图片的时候获取当前项目的相对路径并找到单项项目所在文件夹: