V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
onice
V2EX  ›  程序员

Java 和 Vue 如何处理 blob 图片?

  •  
  •   onice · 2019-09-20 16:12:39 +08:00 · 3761 次点击
    这是一个创建于 1923 天前的主题,其中的信息可能已经有所发展或是发生改变。

    后端是 Java,持久层是 JPA。图片是存数据库里面的,blob 类型。

    现在有两个问题,一个是使用 SpringMVC 返回数据转换 JSON 数据的时候,blob 对应的字节数组会如何处理?

    还有一个就是用 Vue 前端,如何渲染二进制图片数据?

    我是需要单独给图片数据写个接口吗?

    大家是怎么处理的呢?谢谢大家。

    14 条回复    2019-09-20 18:34:19 +08:00
    VDimos
        1
    VDimos  
       2019-09-20 16:16:24 +08:00 via Android
    得单独这一个接口,前端可以用 URL 或者 FileReader
    chairuosen
        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
    hkitdog
        3
    hkitdog  
       2019-09-20 16:30:42 +08:00 via iPhone
    ...这数据库得多大.?
    LongMaoz
        4
    LongMaoz  
       2019-09-20 16:40:42 +08:00
    数据库存 Blob 不太好吧。。。。
    iMusic
        5
    iMusic  
       2019-09-20 16:59:26 +08:00
    以前到一个公司提供技术支持,也是用 blob 的方案(原因是防止图片泄露给外部 = =#)。前端展示可以请求设置 responseType = 'blob',返回数据 img.src = URL.createObjectURL(blob)
    0NF09LJPS51k57uH
        6
    0NF09LJPS51k57uH  
       2019-09-20 17:03:53 +08:00
    上个 oss 吧。。
    zaul
        7
    zaul  
       2019-09-20 17:21:16 +08:00
    base64 转文件对象然后上传到服务器拿到 URL 再使用
    w292614191
        8
    w292614191  
       2019-09-20 17:31:35 +08:00
    以前做的是 base64,前端直接 src:data:image/png;base64,..........
    mamahaha
        9
    mamahaha  
       2019-09-20 17:31:41 +08:00
    虽然我没学过 java,但我知道应该用 FileWriter(),这个场景用 php 一行就能解决。
    royzxq
        10
    royzxq  
       2019-09-20 18:21:44 +08:00
    数据库存 blob。。。。
    littlewing
        11
    littlewing  
       2019-09-20 18:28:13 +08:00
    @royzxq 如果是 oracle 我觉得还是没问题的,mysql 其实数据量小的时候也无所谓,没多大性能影响。但这么做不是一个好习惯
    littlewing
        12
    littlewing  
       2019-09-20 18:28:53 +08:00
    @chairuosen 其实 ISO-8859-1 编码也可以的
    littlewing
        13
    littlewing  
       2019-09-20 18:29:31 +08:00
    @chairuosen 我们通过 json 发送数据库的 blob 字段数据时就是这么做的
    honeycomb
        14
    honeycomb  
       2019-09-20 18:34:19 +08:00 via Android
    springmvc 如果把它 byte 数组处理的话,默认配置下会转成 base64 的字符串
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3093 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 13:12 · PVG 21:12 · LAX 05:12 · JFK 08:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.