【发布时间】: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;
}
你怎么看?
【问题讨论】: