创建唯一的图像名称

edw*_*osh 4 php filenames

为用户上传的图像创建唯一名称的好方法是什么?

我不想有任何重复,所以像MD5($ filename)这样的东西是不合适的.

有任何想法吗?

小智 15

正如我所提到的,我认为创建唯一文件名的最佳方法是简单地添加time().那就像

$image_name = time()."_".$image_name;
Run Code Online (Sandbox Code Playgroud)


小智 7

从上传的文件中抓取文件扩展名:

$ext = pathinfo($uploaded_filename, PATHINFO_EXTENSION);
Run Code Online (Sandbox Code Playgroud)

抓住时间到第二个: time()

抓住一些随机性: md5(microtime())

将时间转换为基数36:base_convert (time(), 10, 36)- 基数36将10字节的字符串压缩到大约6个字节,以允许使用更多的随机字符串

将整批作为16个字符串发送:

$unique_id = substr( base_convert( time(), 10, 36 ) . md5( microtime() ), 0, 16 ) . $ext;
Run Code Online (Sandbox Code Playgroud)

我怀疑它会不会碰撞 - 如果你不介意很长的文件名,你甚至不能截断它.


Pti*_*val 0

http://php.net/manual/en/function.uniqid.php也许?

  • 您可以在其前面添加用户 ID 以避免 2 个用户之间的冲突(不到一毫秒)。