Php如何获取唯一的文件名

时间:2015-02-15 13:32:28

标签: php

我尝试编写生成唯一文件名的PHP代码。

首先,它会检查第一个给定的名称文件'矢量背景' 是否退出文件夹。如果是,它将在最后添加1,因此文件名将'矢量背景1' 所以它会再次检查是否比我最后一个所以新名称'矢量背景11' 它会做什么,而它会得到唯一的名称。

我尝试自己

$folder='C:\Users\Desktop\file exits\\';
$name='log';

$result=file_exists($folder.$name);
if ($result == "1") {  //// file exits so work start
///// generate name file that not exists in folder
$name=$name.' 1';
$result=file_exists($folder.$name);

if ($result == "1") {
$name=$name.' 1';
$result=file_exists($folder.$name);
}

}

这是我的进步,它不是智能代码

1 个答案:

答案 0 :(得分:2)

首先,您可以重写代码,以便“命名”算法存在于循环中。

$fname = $folder . $name;
while (file_exists($fname)) {
    $fname = $fname . '1';
}

但是,此代码效率不高,可能会使您遇到问题。例如,文件路径可能超过操作系统允许的最大字符数。


如果你想要实现的只是一个防止文件名冲突的唯一文件名,那么PHP就有一个名为tempnam的内置函数。它在指定目录中创建一个具有唯一文件名的文件,其访问权限设置为0600。

  

string tempnam (string $ dir,string $ prefix)

所以你的代码可以像这样重写:

$fname = tempname($folder, $name);