我正在开发一个php网站,我们必须从users.i上传图像,我必须重命名该文件以防止图像名称冲突。
uniqid(rand(), true);
and adding a large random number after it.
这是否完美无缺。有什么建议.. ??
关于图像生成的唯一名称.....
答案 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
?>