任何人都可以建议为文件上传生成唯一文件名以避免重复条目的最佳做法吗?
提前致谢。
我通常要么使用 uniqid() 函数为文件名创建 UID,要么使用上传文件的用户名创建一个文件夹并保留原始文件名。第一个的缺点是您必须将原始文件名保存在某处以显示给用户。
您可以使用文件上传时的 unix 时间戳。如果您希望同时进行多个上传,您可以附加一个唯一的用户 ID 或原始文件名的一部分。
像这样的东西:
$filename = md5(date('Y-m-d H:i:s:u'));
由于不保证 MD5 哈希值是唯一的,因此最好使用 file_exists($filename) 检查冲突。在这种情况下,请重新运行上述内容。
有tempnam
and tmpfile
,如果你想创建文件,或者这个 question。
$username.$timestamp.$randomNumber
或者,如果您不希望人们知道上传时间和上传人的详细信息,您可以对此进行哈希处理