【问题标题】:Names of image files on a website: hashes or random strings?网站上图像文件的名称:散列还是随机字符串?
【发布时间】:2012-02-28 08:34:28
【问题描述】:

我已经阅读了几个关于命名上传图像的问题,人们通常建议对图像内容进行哈希处理以生成唯一的文件名以及自动防止存储重复项。但是,如果两个用户上传了同一张图片,然后其中一个想删除它? 每次删除图片时,我们都需要检查其他所有者。

恕我直言,重复文件的可能性通常很小;同时,此检查需要添加几串代码,并且会在性能方面付出一些代价(画廊往往使用巨大的表格)。

那么,为什么不使用真正随机的字符串作为名称呢? 以php为例:

$filename = md5(mt_rand());

更不用说散列会产生相当长的值,并且对于随机值,您可以根据需要调整长度(请记住,变化的数量也会发生变化):

$filename = substr(md5(mt_rand()), 0, 15);

并带有可能发生冲突的循环(从另一个问题中窃取的想法):

while (true) {
 $filename = substr(md5(mt_rand()), 0, 15);
 if (!file_exists('somedir/'.$filename.'.jpg')) break;
}

你怎么看?

【问题讨论】:

    标签: image filenames storage


    【解决方案1】:

    为什么不直接在图像文件前加上用户 ID,或者为每个用户创建一个文件夹? (我认为在同一个文件夹中保留太多文件不是​​一个好主意。) 只要符合您的要求,您就可以为所欲为,但哈希方法可能会被证明更有效。

    【讨论】:

    • 我真的是 webdev 的新手,没有拥有大量图像的经验,但其他人说拆分文件夹可以提高性能,例如 a/b/abcdef.jpg。至于使用主键,我也想知道为什么其他问题的人不这么说。
    • 为包含百万文件的文件夹创建和读取索引肯定会减慢整个过程。
    猜你喜欢
    • 2012-11-19
    • 2015-05-23
    • 2014-08-01
    • 2017-05-29
    • 2018-03-28
    • 1970-01-01
    • 2011-12-22
    • 2022-01-08
    • 2023-03-16
    相关资源
    最近更新 更多