如何在上传时自动重命名图像文件名?

时间:2015-11-04 15:29:07

标签: php file-upload image-uploading file-rename

这是我的上传功能代码:

function upload(&$file, $destinationDir = "", $destinationName = "", $secure = true){
    $ret = false;
    if (isset($file['tmp_name']) && isset($file['name'])){
        if ($destinationName == ''){
            $destinationName = $file['name'];
        }

        $destinationFile = $destinationDir . '/' . $destinationName;
        if (move_uploaded_file($file['tmp_name'], $destinationFile)){
            if ($secure){
                chmod($destinationFile, 0644);
            }

            $ret = true;
        }
    }

    return $ret;
}

此功能无法自动重命名文件名,如果两个文件名相同,则会将新图像文件替换为现有文件。

如何在上传到服务器时更改上述功能以自动重命名文件?

非常感谢

2 个答案:

答案 0 :(得分:1)

获取扩展程序:

//Get extension
$ext = pathinfo($file["name"], PATHINFO_EXTENSION);

然后改变这一行:

$destinationName = $file['name'];

添加到时间戳的文件的sha1哈希与扩展名的组合:

$destinationName = sha1_file($file["tmp_name"]).time().".".$ext;

答案 1 :(得分:0)

使用类似的东西:

$destionationFile = $destinationDir . '/' . $destinationName; 
if(is_file($destinationFile))
{
$destinationName = basename($destinationName).'_'.hash('sha256', time().rand(9999, 999999)).'.'.pathinfo($destinationName)['extension'];
$destionationFile = $destinationDir . '/' . $destinationName;
}