【问题标题】:Php How to get unique file name [duplicate]PHP如何获得唯一的文件名[重复]
【发布时间】:2015-02-15 13:32:27
【问题描述】:

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

首先它将检查第一个给定名称文件 'Vector background' 是否存在于文件夹中。如果是,它将在最后添加 1,因此文件名将是 'Vector background 1' 所以它会再次检查是否比 ad one i last 所以新名称将是 'Vector background 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);
}

}

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

【问题讨论】:

    标签: php


    【解决方案1】:

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

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

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


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

    字符串 tempnam(字符串 $dir,字符串 $prefix)

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

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

    【讨论】:

    • 我建议使用 i++ 的 for 循环并在名称中使用 i 名称不会变得非常大
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    相关资源
    最近更新 更多