34

任何人都可以建议为文件上传生成唯一文件名以避免重复条目的最佳做法吗?

提前致谢。

4

6 回答 6

35

我通常要么使用 uniqid() 函数为文件名创建 UID,要么使用上传文件的用户名创建一个文件夹并保留原始文件名。第一个的缺点是您必须将原始文件名保存在某处以显示给用户。

于 2010-12-06T23:20:57.270 回答
10

此功能可能会有所帮助:

http://php.net/manual/en/function.uniqid.php

您还可以考虑使用文件内容的哈希值,例如:

http://php.net/manual/en/function.sha1-file.php

于 2010-12-06T23:23:54.907 回答
7

您可以使用文件上传时的 unix 时间戳。如果您希望同时进行多个上传,您可以附加一个唯一的用户 ID 或原始文件名的一部分。

于 2010-12-06T23:19:49.743 回答
7

像这样的东西:

$filename = md5(date('Y-m-d H:i:s:u'));

由于不保证 MD5 哈希值是唯一的,因此最好使用 file_exists($filename) 检查冲突。在这种情况下,请重新运行上述内容。

于 2010-12-06T23:31:29.120 回答
3

tempnamand tmpfile,如果你想创建文件,或者这个 question

于 2010-12-06T23:21:13.080 回答
1

$username.$timestamp.$randomNumber

或者,如果您不希望人们知道上传时间和上传人的详细信息,您可以对此进行哈希处理

于 2010-12-06T23:21:00.510 回答