• 1.9k

怎么设计一个较好的保存上传图片的表?

图片描述

在没有用第三方储存时,我们项目的图片上传做了一个表,如上图,用在图片上传模型的地方可以做到图片去重,url列保存的是图片的地址Uploads/Pic/2016-06-15/5760a0ed1d994.png,而实际上访问地址是 www.xxx.com/Uploads/Pic/2016-06-15/5760a0ed1d994.png

这个地址可以拆分为:Uploads/Pic/2016-06-15/5760a0ed1d994.png

即:服务器相对目录动态目录动态文件名

我们所有的图片上传都用了这个上传模型,上传去重后感觉比较高效,我们商品主图直接放的是这个表的id,一直以来这个设计感觉还行,可是现在问题来了:

1:首先URL这里所有的图片放在网站访问目录下面,这对于有的版权保护图片来说就不合适了。

2:我们现在是单台服务器,这个url读出来后前面加个网址或者web访问根目录“/”就可以了,但是如果有多台服务器那么就不好办了。(明显这种设计有问题,只是一开始没意识到)

3:如果此时我们用了第三方图片储存的话,那么之前的商品主图用这个图片表的id这种设计岂不是就土崩瓦解了,如果我们用第三方后,那么商品表的主图字段存的是什么呢,是七牛的图片访问地址吗?

补充:
https://fuss10.elemecdn.com/e...

看到这个地址,我发现问题二似乎有救,那就是在抽一层“目录”出来——https://fuss10.elemecdn.com/主机目录/资源目录),哎,也只是突然想到,没有思路,这样的话如果主机变动的话也完蛋了,想的脑壳疼了。

我甚至还想给这个表加上图片尺寸,大小的字段,exif信息字段,不知道可不可以。

希望有经验的大神给我点思路,谢谢了^_^

阅读 2.5k
评论
    2 个回答
    • 1.3k

    1:首先URL这里所有的图片放在网站访问目录下面,这对于有的版权保护图片来说就不合适了。

    版权保护,这块指的是?防盗链么?还是防下载什么的。七牛无论是防盗链还是token的下载权限验证什么的都支持的。应该是可以满足你这个需求

    2:我们现在是单台服务器,这个url读出来后前面加个网址或者web访问根目录“/”就可以了,但是如果有多台服务器那么就不好办了。(明显这种设计有问题,只是一开始没意识到)

    你都发在七牛这边了,所以根本不需要考虑这个问题。一个图片域名搞定所有。程序的配置里面写好这个域名就好了。

    3:如果此时我们用了第三方图片储存的话,那么之前的商品主图用这个图片表的id这种设计岂不是就土崩瓦解了,如果我们用第三方后,那么商品表的主图字段存的是什么呢,是七牛的图片访问地址吗?

    七牛有个Etag的,也有明确的算法,可以用于去重,每张图有唯一的Etag,你可以用这个当你原来的ID存。

    补充~~你写的都是相对路径,所以不要担心换主机什么的。用第三方,域名区别就行了。
    如果你想自建,那可以利用一致性Hash等方案去做主机区分。。当然。这个架构你可以参考淘宝的。比较完善

      相似问题
      七牛云问答
      合作问答

      七牛云 联合 SegmentFault 共同推出技术问答专区,为开发者们提供社区支持和帮助。在这里,你将直接获得...

      推荐文章