在许多情况下,我们需要在创建服务器时使文件名不同,以防止重复。最常见的答案似乎是,在最后添加时间戳或将文件名存储在数据库中,并使用这些存储的值来计算新名称。这些都是好的,但是,附加一个长时间戳并不总是非常用户友好,并且存储在数据库中并不总是一个选项。那么,如何在通过php创建标准文件名时自动增加标准文件名呢?
答案 0 :(得分:8)
这是我为此目的编写的一个简单函数:
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);
答案 1 :(得分:6)
所有这些答案似乎都有点过分了:
$k = 0;
while(!$result){
if(!file_exists("file[$k].ext"))
$result = "file[$k].ext";
$k++;
}
makefile($result);
答案 2 :(得分:1)
function incrementFileName($file_path,$filename){
$array = explode(".", $filename);
$file_ext = end($array);
$root_name = str_replace(('.'.$file_ext),"",$filename);
$file = $file_path.$filename;
$i = 1;
while(file_exists($file)){
$file = $file_path.$root_name.$i.'.'.$file_ext;
$i++;
}
return $file;
}
答案 3 :(得分:0)
这是一个简短的代码段,演示了如何开始解决此问题。
WITH CALCULATED MEMBER [Stats].[Stats-Time].[Prior Year] AS
([Stats].[Stats-Time].defaultmember, prevYear() ), SOLVE_ORDER = 1000
SELECT [Time].[Year].[Year] on 0
, {[Stats].[Stats-Time].[L-Stats-Time].&[Value], [Stats].[Stats-Time].[Prior Year]} on 1
FROM sales
WHERE [Measures].[Amount] * {[Customers].[Geography].[Region].[Europe].[Netherlands]}