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

2014-08-31 20:59:14 +08:00
 mywaiting
本来很简单的事情,可能是我想复杂了,问问大家有什么方法无~

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

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

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

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

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

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

谢谢!
4231 次点击
所在节点    问与答
9 条回复
goace
2014-08-31 21:24:52 +08:00
首先如果只是小站的话,图片不会占你多少空间,没必要纠结这个问题。

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

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

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

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

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


@akfish 嗯嗯,亲的hash的做法昨晚洗澡的时候想到了,手动点感谢一个。
582033
2014-09-01 09:50:12 +08:00
@whywhywhy 我喜欢你的思路
omi4399
2014-09-01 12:21:14 +08:00
我都丢七牛上了,是不是去清理一下就好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/130964

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX