在浏览我们自己的项目时,其他开发人员使用rand()在上传图像文件时为其提供随机名称.
我的建议是使用rand(100,999)来获得更多有意义的文件名.你推荐哪一个?它是一个低流量的网站,所以我相信碰撞的风险非常低.
使用tempnam http://at2.php.net/manual/de/function.tempnam.php来保存获取文件名.提供一个前缀,以便在FTP客户端,资源管理器中更好地识别这些文件.
几乎完全安全的解决方案是使用您想要的任何方法(uniqid()或者time()肯定是最好的方法),但查看文件是否已经存在.如果它已经存在,请使用其他名称,或添加类似名称(1).重复,直到找到可用的文件名.
理论上,如果两个用户在同一时间上传并且恰好生成完全相同的ID,那么它在理论上也不完全是碰撞安全的,但这里发生碰撞的风险是微观的.
如果您希望文件名有意义,请考虑使用您拥有的任何实际数据,并在其后面添加随机ID:
user500_picture1_1238273193173294323191.jpg
Run Code Online (Sandbox Code Playgroud)
如果要将信息添加到使用空格或变音符号的文件名,则使用urlencode()是一种很好的技巧,可以将任何类型的字符串转换为所有文件系统上的有效文件名.