生成唯一的名称?

时间:2009-11-15 18:09:23

标签: php random

我正在开发一个php网站,我们必须从users.i上传图像,我必须重命名该文件以防止图像名称冲突。

uniqid(rand(), true);
and adding a large random number after it.

这是否完美无缺。有什么建议.. ??

关于图像生成的唯一名称.....

4 个答案:

答案 0 :(得分:7)

函数tempnam()创建一个具有唯一名称的文件。

答案 1 :(得分:1)

获取文件的md5并使用它。 IIRC,碰撞的几率是64M中的1。如果这还不够,请在其前面加上以秒或毫秒表示的时间戳。这样,即使生成了重复的md5,文件也必须在相同的秒/毫秒内进行冲突。

答案 2 :(得分:0)

您可以在SQL表的AutoIncrement值上使用Base36(希望您 使用SQL表)。

$filename = base_convert($last_insert_id, 10, 36);

答案 3 :(得分:0)

根据“图像库”的“大小”,您有两种方法: 1.对于非大量文件,我这样做

<?php

$file = sanitize_file($file); // remove all no [az-09_] characters for safe url linking;
$file_md5 = $md5($file);
$file_extention = $md5($file);

// since I assume the file should belongs to someone you can do this
$file_name = $user_id . $file_md5 . $file_extension;

// then save the file

?>
  1. 选项.... CacheMogul。在这里你需要运用你的想象力。但是对于大量的文件,这会产生很好的分片,所以你不必担心文件夹的最大数量或大小