社交网站,用户上传的图片常用的命名和存储规则? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Yuchen

社交网站,用户上传的图片常用的命名和存储规则?

  •  
  •   Yuchen Jul 24, 2014 8430 views
    This topic created in 4302 days ago, the information mentioned may be changed or developed.
    自己做一个社交网站练练手,遇到了这样的问题。

    1. 用户上传的图片如何命名才能保证不重复?目前的想法是文件名和时间戳的md5值。
    2. 图片的存储路径?根据用户id的话,images/userid/7shd897a.jpg 这样可以吗
    3. 像用户头像和相册缩略图会用到同样图片的不同尺寸,这个应该怎么处理呢,上传以后剪裁图片,服务器保存不同尺寸的图片吗?
    10 replies    2014-07-25 05:35:35 +08:00
    qiayue
        1
    qiayue  
    PRO
       Jul 24, 2014
    千万不要原名保存用户上传的文件,如有需要你可以数据库里保存原始文件名,然后服务器存储一定要自己重命名
    kier
        2
    kier  
       Jul 24, 2014
    命名可以图片内容MD5,存储路径可以按照不同功能分目录,不同尺寸可以用nginx的插件
    iyaozhen
        3
    iyaozhen  
       Jul 24, 2014
    1、一定要重命名,文件名+时间MD5是个常用的方法。不过貌似也有安全问题。《白帽子说web安全》那本书里有些,不记得详情了。还有就是文件名+时间可能会重名。比如说文件名也是类似时间的数字。
    2、图片直接放一个文件夹吧。以userid当文件夹可能会有安全、隐私方面的问题。比如通过观察路径就可以知道哪图片是谁的。还有就是要是你有10w个用户,就会有10w个文件夹。汗!
    3、上传后生成不同的缩略图,放在不同的文件夹中。
    kslr
        4
    kslr  
       Jul 24, 2014
    命名可以是 username+时间戳 生成MD5,文件夹用MD5的前5位命名
    Yuchen
        5
    Yuchen  
    OP
       Jul 24, 2014
    @kslr 谢谢提供思路。不懂MD5的原理,想问下用前5位命名文件夹的话,发生碰撞的可能性大吗?
    Yuchen
        6
    Yuchen  
    OP
       Jul 24, 2014
    @iyaozhen 嗯 重命名肯定要,感觉用username+时间戳生成MD5的方法很好。图片放一个文件夹心理上感觉不舒服,但是也说不出哪里不好。。。
    Yuchen
        7
    Yuchen  
    OP
       Jul 24, 2014
    @qiayue 原始文件名应该不需要,重命名肯定要的,谢谢建议~
    TangMonk
        8
    TangMonk  
       Jul 24, 2014
    就和生成短链url一样,每个随机字符都是唯一值,而且速度快

    我以 nodejs 举个例子:

    Showfom
        9
    Showfom  
    PRO
       Jul 25, 2014
    @kier 求教不同尺寸用什么 Nginx 插件?
    kslr
        10
    kslr  
       Jul 25, 2014
    @Yuchen 即使有碰撞也无妨,因为只是进行适当的分类,前5位大概有255个文件夹。
    About     Help     Advertise     Blog     API     FAQ     Solana     2621 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 53ms UTC 05:43 PVG 13:43 LAX 22:43 JFK 01:43
    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