做项目遇到图片上传之后回显不了的问题。然后就是网上搜索一波,发现有很多朋友也会遇到同样的问题,但是有用的解决的办法却很少。之前遇到这个问题,我认为是上传的图片没有被发布的原因,但没有深究,直接用了一个设置虚拟路径的办法。
1、设置虚拟路径(请看我的另一篇文章)
https://www.jianshu.com/p/47449c5e597b
前几天,回来复盘这个问题,思路终于豁然开朗。因为我原来存图片的路径是类似这样的:
G:\360MoveData\Users\dell\Pictures\web
就是一个自己项目下的文件夹的绝对路径。对的问题就出现在这里。因为在写项目的IDE中的这个文件夹的绝对路径和运行tomcat后的这个文件夹的绝对路径是完全不同的,运行后的项目,文件在tomcat根目录里的webapps文件里面,所以,项目运行后,把图片比如存到了 G:\360MoveData\Users\dell\Pictures\web,那么回显的时候当然就找不到这个图片了,因为回显得路径是比如web/jkkhkvjkfs-231561.jpg,而此时的这个web是在tomcat里webapps下该项目里的。
所以想明白这个,问题就不再是问题。解决办法:
所以路径错了,我们就用正确的路径咯,就把tomcat里的该项目下的该目录的绝对路径拿到去存图片,比如
G:\apache-tomcat-9.0.12-windows-x64 (1)\apache-tomcat-9.0.12\webapps\hhmanager_war\temporaryimg
但是虽然如此可以解决,但是,当项目拿到另一个tomcat里运行,是不是又要换这个地址才行呢?no!no!
我是这样做的:String filepath = request.getSession().getServletContext().getRealPath("temporaryimg")
拿filepath 作为图片存储路径,就是在运行时,用代码去获取该路径,这样,就完美了。
缺点:每次重启项目,要把图片备份,启动完成再放进图
原因:项目重启,是用war包重新部署,而war包里是没有之前存的图片的。
ok!就是这样,希望帮到你。