利用springboot开发网站,一个简单的功能:上传图片,然后显示。上传的图片存放在非项目路径下,eg:D:/appdata/images
中,然后图片地址放存放在数据库中,存放的数据为D:/appdata/images/picturename.png
。
想法很简单:从数据库中读取出这个字段,传值到网页,让页面通过这个路径显示图片。但是没有显示,F12调试,图片路径为: http://localhost/D:/appdata/images/picturename.png
有考虑过读取到图片路径,通过流将图片传送到页面,但是查询出来的数据有很多,这样的话每个图片都要转化为流再返回给界面。有没有更好的方案呢?
將上传图片存放到非项目路劲中,没用文件服务器,也没有使用流传送。实现方案是改变spring的默认静态图片资源路径,当然,这并不是完美的方案:可能也会遇到部署的时候,指定的路径中没有静态图片资源会导致页面无法渲染图片、资源没有打包到项目中。上自己的解决过程。
需要配置springboot。
1、配置application.properties文件,添加配置指定上传路径,比如我的配置字段为:
cbs.imagesPath=file:/D:/upload/
2、添加配置类:
这段代码不需要详细知道什么意思,知道这个代码更改后,图片放到
/D:/upload/
后,从磁盘读取的图片数据scr将会变成images/picturename.jpg
的格式。这样改了之后,网页的静态图片资源就需要放到指定的路径中了,b比如:<link rel="shortcut icon" type="image/x-icon" href="images/avatar_b.jpg" media="screen" />
3、数据库中存放图片再磁盘中的绝对路径:
网页中的图片:
4、读取字段,获取文件名,比如
/20170824122758.jpg
,然后拼装为/images/20170824122758.jpg
5、结果:磁盘中的图片:
希望大家多多指正,不胜感激!