对于磁盘sha1或uniqid上的文件随机名称,哪个更好?

Mr *_*der 5 php upload sha1 file unique

要在磁盘文件夹内的远程服务器上存储用户上传的文件,我将文件名更改为

$filename = '/tmp/foo.txt';
$newName = sha1_file($filename); // 40 characters 
//or I can do
$newName = uniqid($filename) // 13 characters 
Run Code Online (Sandbox Code Playgroud)

对于不太可能失败的新名称,这是一种更健壮的方法?谢谢.

Tho*_*nor 6

更好的解决方案是使用tmpfile()tempnam().任何一个都可以保证创建一个不会发生冲突的未使用文件,并且不会被更改权限的恶意进程"截获".tmpfile()在文件关闭时自动删除文件,同时tempnam()保留文件

http://www.php.net/manual/en/function.tmpfile.php

http://www.php.net/manual/en/function.tempnam.php