在php中为文件名生成随机字符串

参见英文答案 > PHP: How to generate a random,unique,alphanumeric string?24个
我如何创建随机文本字符串以用于文件名?

我正在上传照片并在完成后重命名.所有照片都将存储在一个目录中,因此它们的文件名必须是唯一的.

有这样做的标准方法吗?

有没有办法在尝试覆盖之前检查文件名是否已经存在?

这是为了一个单一的用户环境(我自己)在我的网站上显示我的个人照片,但我想自动化一点.我不需要担心两个用户同时尝试上传生成相同的文件名,但我确实想检查它是否已经存在.

我知道如何上传文件,我知道如何生成随机字符串,但我想知道是否有一种标准的方法.

function random_string($length) {
    $key = '';
    $keys = array_merge(range(0,9),range('a','z'));

    for ($i = 0; $i < $length; $i++) {
        $key .= $keys[array_rand($keys)];
    }

    return $key;
}

echo random_string(50);

输出示例:

zsd16xzv3jsytnp87tk7ygv73k8zmr0ekh6ly7mxaeyeh46oe8

编辑

在目录中使这个唯一,在这里更改为函数

function random_filename($length,$directory = '',$extension = '')
{
    // default to this files directory if empty...
    $dir = !empty($directory) && is_dir($directory) ? $directory : dirname(__FILE__);

    do {
        $key = '';
        $keys = array_merge(range(0,'z'));

        for ($i = 0; $i < $length; $i++) {
            $key .= $keys[array_rand($keys)];
        }
    } while (file_exists($dir . '/' . $key . (!empty($extension) ? '.' . $extension : '')));

    return $key . (!empty($extension) ? '.' . $extension : '');
}

// Checks in the directory of where this file is located.
echo random_filename(50);

// Checks in a user-supplied directory...
echo random_filename(50,'/ServerRoot/mysite/myfiles');

// Checks in current directory of PHP file,with zip extension...
echo random_filename(50,'','zip');

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...