上传图片的逻辑,大家有什么方法的吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mywaiting
V2EX    问与答

上传图片的逻辑,大家有什么方法的吗?

  •  
  •   mywaiting 2014-08-31 20:59:14 +08:00 4840 次点击
    这是一个创建于 4133 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本来很简单的事情,可能是我想复杂了,问问大家有什么方法无~

    就是一个Blog吧,需要实现上传图片的功能,那就直接upload image上去服务器,将upload的图片路径等的信息插入到database,然后服务器返回图片的路径等数据就好了,然后我有以下问题:

    1、作者写着blog,上传了图片,但是又不想写了,blog也没有保存,那插入数据库的image的信息怎么办?

    2、作者写完了blog,但是上传了很多blog无关的图片,blog里面也没有引用到这些图片,那插入到数据库的image的信息怎么办?

    3、那些blog引用不到的图片放在upload的文件也占用磁盘空间,怎么办?

    有同学写过相关的完整的图片上传逻辑的实现吗?Google了一遍好像都没有感觉。

    求上面的问题处理方法、逻辑。

    谢谢!
    9 条回复    2014-09-01 12:21:14 +08:00
    goace
        1
    goace  
       2014-08-31 21:24:52 +08:00   1
    首先如果只是小站的话,图片不会占你多少空间,没必要纠结这个问题。

    实在在意这个事情的,可以个每个图片加个引用计数,首次上传计数为0,文章被Post的时候,文章里的所有图片引用加1;服务端周期性地清理计数为0的图片。
    breakwa11
        2
    breakwa11  
       2014-08-31 21:25:06 +08:00   1
    加一个引用字段,编辑时加上对图片的引用的时候更新引用,便能跟踪到无引用的图片
    mywaiting
        3
    mywaiting  
    OP
       2014-08-31 21:50:22 +08:00
    @goace
    @breakwa11

    也不分站点大小吧,处女座的洁癖,你懂的。

    提供的思路甚好!已点感谢!
    whywhywhy
        4
    whywhywhy  
       2014-08-31 23:49:54 +08:00
    丢别人图床上 浪费别人的空间 再也不用考虑什么数据库啊 什么备份啊 什么乱七八糟的了 当然啦 选择一个靠谱的图床是件很有意思的事情
    Mutoo
        5
    Mutoo  
       2014-09-01 00:02:54 +08:00
    可以参考wordpress做法,媒体库与文章是独立的两个功能。

    图片先上传到媒体库,再在文章中引用。这样分开管理,即使你上传了图片,文章不发布,也可以在媒体库中管理,事后删除。
    akfish
        6
    akfish  
       2014-09-01 06:25:25 +08:00 via iPad   1
    从用户体验的角度来讲,这种需要占用用户时间和资源上传的东西,不要随意丢弃。想像一下你忍者龟速上传了一个几M的gif,然后抽风了文章没保存,于是又要重新上传是多么蛋疼的事情。
    要考虑存储空间占用的问题,要先思考图片是什么。一个图片资源其实产生了两个实体:物理文件和元数据。物理文件很好理解,元数据则是用户给图片附加的属性。
    对物理文件做hash,hash当作文件名存储,用户的重复文件不会占用多余的存储空间。元数据才用数据库管理,不同用户的不同元数据可能指向同一个物理文件。这部分逻辑可以对用户隐藏,也可以通过类似媒体库的概念暴露给用户。
    真正量大到要操心空间占用了,就像楼上说的,引用计数,超时未用的图片删了就是了。
    mywaiting
        7
    mywaiting  
    OP
       2014-09-01 09:00:16 +08:00
    @whywhywhy 丢别人的图床还是担心服务不靠谱吧,我们虽然能随时翻到imgur看图,但用户不一定。微博的确是个好图床。

    @Mutoo 图片的上传肯定是分开管理的,做成媒体库这样也未尝不可,就是想完善一下这个程序的逻辑吧。


    @akfish 嗯嗯,亲的hash的做法昨晚洗澡的时候想到了,手动点感谢一个。
    582033
        8
    582033  
       2014-09-01 09:50:12 +08:00
    @whywhywhy 我喜欢你的思路
    omi4399
        9
    omi4399  
       2014-09-01 12:21:14 +08:00 via iPhone
    我都丢七牛上了,是不是去清理一下就好
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3339 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 00:39 PVG 08:39 LAX 16:39 JFK 19:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86