后端是 Java,持久层是 JPA。图片是存数据库里面的,blob 类型。
现在有两个问题,一个是使用 SpringMVC 返回数据转换 JSON 数据的时候,blob 对应的字节数组会如何处理?
还有一个就是用 Vue 前端,如何渲染二进制图片数据?
我是需要单独给图片数据写个接口吗?
大家是怎么处理的呢?谢谢大家。
1
VDimos 2019-09-20 16:16:24 +08:00 via Android
得单独这一个接口,前端可以用 URL 或者 FileReader
|
2
chairuosen 2019-09-20 16:24:47 +08:00
JSON 不能存二进制文件,小文件需要转成 base64 的字符串,大文件还是放 url 吧。
前端用 canvas https://stackoverflow.com/questions/38004917/how-to-render-a-blob-on-a-canvas-element |
3
hkitdog 2019-09-20 16:30:42 +08:00 via iPhone
...这数据库得多大.?
|
4
LongMaoz 2019-09-20 16:40:42 +08:00
数据库存 Blob 不太好吧。。。。
|
5
iMusic 2019-09-20 16:59:26 +08:00
以前到一个公司提供技术支持,也是用 blob 的方案(原因是防止图片泄露给外部 = =#)。前端展示可以请求设置 responseType = 'blob',返回数据 img.src = URL.createObjectURL(blob)
|
6
0NF09LJPS51k57uH 2019-09-20 17:03:53 +08:00
上个 oss 吧。。
|
7
zaul 2019-09-20 17:21:16 +08:00
base64 转文件对象然后上传到服务器拿到 URL 再使用
|
8
w292614191 2019-09-20 17:31:35 +08:00
以前做的是 base64,前端直接 src:data:image/png;base64,..........
|
9
mamahaha 2019-09-20 17:31:41 +08:00
虽然我没学过 java,但我知道应该用 FileWriter(),这个场景用 php 一行就能解决。
|
10
royzxq 2019-09-20 18:21:44 +08:00
数据库存 blob。。。。
|
11
littlewing 2019-09-20 18:28:13 +08:00
@royzxq 如果是 oracle 我觉得还是没问题的,mysql 其实数据量小的时候也无所谓,没多大性能影响。但这么做不是一个好习惯
|
12
littlewing 2019-09-20 18:28:53 +08:00
@chairuosen 其实 ISO-8859-1 编码也可以的
|
13
littlewing 2019-09-20 18:29:31 +08:00
@chairuosen 我们通过 json 发送数据库的 blob 字段数据时就是这么做的
|
14
honeycomb 2019-09-20 18:34:19 +08:00 via Android
springmvc 如果把它 byte 数组处理的话,默认配置下会转成 base64 的字符串
|