V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sjmcefc2
V2EX  ›  数据库

求教 postgresql 如何存储 jpg 或者其他格式的图片?

  •  
  •   sjmcefc2 · 2019-03-31 00:44:07 +08:00 · 2888 次点击
    这是一个创建于 2051 天前的主题,其中的信息可能已经有所发展或是发生改变。

    图片如何存储呢?如何显示呢

    18 条回复    2019-04-07 10:16:52 +08:00
    forestLittleBear
        1
    forestLittleBear  
       2019-03-31 00:46:55 +08:00 via Android
    数据库里面存图片路径。
    neoblackcap
        2
    neoblackcap  
       2019-03-31 01:14:17 +08:00   ❤️ 1
    二进制文件放文件系统或者对象存储啊,数据库存对应的地址
    deepdark
        3
    deepdark  
       2019-03-31 01:22:33 +08:00 via Android
    要么图片上传到图床,数据库保存地址。要么图片上传到服务端,生成静态资源地址,数据库保存。或者图片直接 base64 入库
    sjmcefc2
        4
    sjmcefc2  
    OP
       2019-03-31 01:32:27 +08:00
    如果考虑到系统备份,那种最好呢? 1.图片路径方式,如果这样是不是我要保证两个都要正确,文件系统上的文件,数据库的路径? 2.base64 入库,是不是增大了无畏的数据库空间?
    msg7086
        5
    msg7086  
       2019-03-31 01:54:04 +08:00
    直接二进制扔进去就好了,然后如果需要的话可以存个原始文件名之类的。
    lynskylate
        6
    lynskylate  
       2019-03-31 02:03:18 +08:00 via Android
    文件系统仅在单机时可以使用,一旦需要多台机子就不行了。一般小文件推荐使用对象存储,如果用的云还能选择不同的版本提高下行速度。随便一个云,对象存储都很便宜,很多云还免费提供 10g 空间。
    zbinlin
        7
    zbinlin  
       2019-03-31 06:29:55 +08:00
    @sjmcefc2
    1. 再加个字段保存路径的
    2. 直接存 bytea 类型就可以了,不需要 base64
    sjmcefc2
        8
    sjmcefc2  
    OP
       2019-03-31 07:28:06 +08:00
    @zbinlin
    @lynskylate
    21k 的这种证件照是不是直接存储在数据库更好呢?读取的时候会不会麻烦些?
    forestLittleBear
        9
    forestLittleBear  
       2019-03-31 09:14:45 +08:00 via Android
    @sjmcefc2 如果文件大小非常小并且数据量非常少的话可以考虑这种方式。
    直接把二进制流存进去即可,读取正常操作就可以。

    不过仍然不推荐直接入库。
    gamexg
        10
    gamexg  
       2019-03-31 09:15:11 +08:00 via Android
    数据库是扩容最麻烦的,还是尽量减轻数据库压力为好。
    beginor
        11
    beginor  
       2019-03-31 09:29:02 +08:00 via Android
    文件小的话可以直接二进制存数据库,文件大的话建议放硬盘
    jugelizi
        12
    jugelizi  
       2019-03-31 09:31:10 +08:00
    哈哈 asp 时代的木马都是这样的 图片内容存数据库
    qianji201712
        13
    qianji201712  
       2019-03-31 09:43:15 +08:00 via Android
    太可怕了,居然想着数据库存图片。。。。
    当然是放链接啊
    loading
        14
    loading  
       2019-03-31 09:59:56 +08:00 via Android
    如果高并发,用静态文件吧。
    yaxianzhi
        15
    yaxianzhi  
       2019-03-31 10:03:45 +08:00
    阿里云 oss,七牛云这些更方便,也不贵
    hyperbin
        16
    hyperbin  
       2019-03-31 10:36:27 +08:00 via Android
    @deepdark 有 Bytea,large object 干嘛用 base64?
    likuku
        17
    likuku  
       2019-04-03 03:03:31 +08:00
    多机存储也可以自己架 hadoop 机群,用它的 hdfs,只是这玩意想在线访问( web 服务) 得自己代码里通过它 API 来操作,并不是个裸 FS,虽然它自己也有提供一些工具可以像 rsync/scp 一样来读写 hdfs。

    没有对象存储云之前,本地用高性能 NAS 的 NFS 服务来提供给其它机器直接的 FS 操作。
    w2exwh
        18
    w2exwh  
       2019-04-07 10:16:52 +08:00 via iPhone
    直接二进制入库的方式比较少吧 基本都是存放路径入库了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2671 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:06 · PVG 19:06 · LAX 03:06 · JFK 06:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.