在许多情况下,我们需要在创建文件时使文件名不同以防止重复.最常见的答案似乎是,在最后添加时间戳或将文件名存储在数据库中,并使用这些存储的值来计算新名称.这些都是好的,但是,附加一个长时间戳并不总是非常用户友好,并且存储在数据库中并不总是一个选项.那么,如何在通过PHP创建标准文件名时自动增加标准文件名呢?
这是我为此目的编写的一个简单函数:
function incrementFileName($file_path,$filename){ if(count(glob($file_path.$filename))>0) { $file_ext = end(explode(".",$filename)); $file_name = str_replace(('.'.$file_ext),"",$filename); $newfilename = $file_name.'_'.count(glob($file_path."$file_name*.$file_ext")).'.'.$file_ext; return $newfilename; } else { return $filename; } }
用法:
$newName = incrementFileName( "uploads/",$_FILES["my_file"]["name"] ); move_uploaded_file($_FILES["my_file"]["tmp_name"],"uploads/".$newName);