• 请不要在回答技术问题时复制粘贴 AI 生成的内容
www6688w
V2EX  ›  程序员

关于数据库中上传文件的储存方案?

  •  
  •   www6688w · Aug 1, 2019 · 3620 views
    This topic created in 2573 days ago, the information mentioned may be changed or developed.

    跟各位 V 站 大佬请教下。

    1.一般对于网站系统中上传的文件,需要在数据库中建立单独的数据表来记录全部的上传操作吗?

    2.在数据表中,上传文件的字段一般如何存储?是直接存文件的相对路径,还是 关联文件上传记录的 id,或者还有其他更好的方案吗?

    emmm,目前我自己一般是先给一个上传文件的记录数据表,然后在数据表需要关联上传文件的字段存储记录 id。 这样的做法,我个人感觉稍微会更好管控一些,也方便迁移。 缺点就是每次查询都需要单独查询文件的相对路径(或者 left join )。

    那大佬们 一般是怎么处理 呢 ?

    18 replies    2019-08-02 09:18:30 +08:00
    gz911122
        1
    gz911122  
       Aug 1, 2019
    存路径就可以用了
    没必要多连一次表
    wingyiu
        2
    wingyiu  
       Aug 1, 2019
    方案二会更好些,文件可以单独作为一个基础服务的,文件元数据管理着具体是存在哪(磁盘或者分布式对象存储)
    julyclyde
        3
    julyclyde  
       Aug 1, 2019
    首先,不要存数据库里
    LeBron23
        4
    LeBron23  
       Aug 1, 2019
    CallMeReznov
        5
    CallMeReznov  
       Aug 1, 2019
    存放在网站本地或者开存储存放
    放数据库这种操作后期维护是要被打死!
    msg7086
        6
    msg7086  
       Aug 1, 2019   ❤️ 1
    我文件直接存数据库里,省了很多事,从此再也不用不停备份文件了。
    luman
        7
    luman  
       Aug 1, 2019
    单独建张表。记录文件路径 原始名 大小 上传人等信息。封装下,并不费事
    www6688w
        8
    www6688w  
    OP
       Aug 1, 2019
    @julyclyde 存数据库是指什么意思? ⊙▽⊙
    www6688w
        9
    www6688w  
    OP
       Aug 1, 2019
    @sunjiayao emmm,我目前就是采用这种形式,总体感觉还行。反正就是查询的时候需要单独获取下路径
    annielong
        10
    annielong  
       Aug 1, 2019
    存数据库是指二进制存在数据库字段中,不过个人一般都是用在 C/S 下,B/S 下都是存独立文件,数据库只存路径
    www6688w
        11
    www6688w  
    OP
       Aug 1, 2019
    @annielong 卧槽,这种骚操作,从来没想过耶 (。_。)

    真要这样存,数据表得多大
    luman
        12
    luman  
       Aug 1, 2019
    @www6688w #9 不用吧。。 返回的时候将下载路径加在返回包里。
    Rorysky
        13
    Rorysky  
       Aug 1, 2019 via iPhone
    没记错 mysql 有专门的二进制存储 方案
    jaskle
        14
    jaskle  
       Aug 1, 2019 via Android
    主要是放在数据库里你就用 cdn 就费事了,而且白白浪费数据库 cpu 和带宽。
    keepeye
        15
    keepeye  
       Aug 1, 2019
    搞一张表存储文件 id,文件 id 中包含路径
    starsriver
        16
    starsriver  
       Aug 1, 2019 via Android
    转换为 blob 或者 bs64.
    jorneyr
        17
    jorneyr  
       Aug 1, 2019
    我们存储文件的绝对路径,和访问文件的 URL (文件先上传到临时文件夹,正式提交表单的时候移动到文件仓库的文件夹下),文件可以通过 Web Server 来访问,也可以通过 Nginx 直接访问静态文件。
    annielong
        18
    annielong  
       Aug 2, 2019
    @www6688w 早期单机时代都这么搞,现在网络时代都上文件存储系统了,数据库中只存储路径或者文件存储系统的编号
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   979 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 22:25 · PVG 06:25 · LAX 15:25 · JFK 18:25
    ♥ Do have faith in what you're doing.