最近在工作中遇到一个关于图片上传的问题。根据之前项目的经验,我知道目前这个公司上传图片有两种方式,
- 一种是把图片上传到公司服务器上,然后把图片放在服务器上的地址存在数据库中,要获得图片的时候直接从库中拿地址就行了
- 另一种就是直接通过流的方式把文件转化为byte数据直接存在数据库里面
之前一个项目我用的是第一种,这次需要用到第二种。同时又考虑到之后需要拿图片在前端页面显示的问题。同事直接建议我使用Base64的方法存,从数据库里拿到图片直接就能显示。一开始有点懵,后来百度了一下发现还挺好用的。废话少说直接上图
1.存图
通过流的方式把文件转化为byte数组(图上我是用的公司框架中的转方法),
自己写的话如下
得到byte数组之后通过调用Base64.getEncoder().encodeToString(bytes[])方法,把byte数组转为String类型数据(photo)直接存入数据库。
2.取图
取图的话,直接查数据库,拿到刚刚存的photo数据
显示的时候,一开始我是直接就把查到的数据放到<img src=" ">
的src中的,但是没效果,一度怀疑是不是要解密啥的,百度了一下发现base