2

我有这个奇怪的问题。

我的文件名为 1.jpg、2.jpg、3.jpg、4.jpg、5.jpg。

现在,我希望人们能够对它们进行排序,所以我想,例如,如果你想让 3 变成 2,你所要做的就是重命名 3.jpg ==> 1b.jpg。这使他介于 1 和 2 之间!

现在只需重命名文件夹中的所有文件,瞧!然而,这似乎不起作用......

我的代码是:

// Part 1

$fileUp = $_POST['imageURL'];
$url = $_SERVER['DOCUMENT_ROOT'].$fileUp;
$fileParts = pathinfo($fileUp);
$fileName = $fileParts['filename'];
$fileExt = $fileParts['extension'];
$fileFolder = $fileParts['dirname'];
$newName = $fileName - 2;
$newFullName = $newName . 'b.' . $fileExt;

$directory = $_SERVER['DOCUMENT_ROOT'].$fileFolder.'/';

rename($url, $directory.$newFullName);

// Part 2

$dirFiles = array();
if ($handle = opendir($directory)) {
    while (false !== ($file = readdir($handle))) {  
        if ($file != "." && $file != "..") {
            $dirFiles[] = $file;
        }
    }
    closedir($handle);
}

sort($dirFiles);
$i = 1;
foreach($dirFiles as $file)
{
    $fileParts = pathinfo($file);
    $fileExt = $fileParts['extension'];
    $newName = $i . '.' . $fileExt;
    rename($directory.$file, $directory.$newName);
    $i++;
}

第 1 部分实质上重命名了要升级的文件。这行得通!但是,如果我随后使用 readdir 重新加载文件,则该图像不在应有的位置(通常在最后)。

所以第 2 部分是关于重命名所有文件。但是,当我启用第 2 部分时,要升级的图像之前的图像消失了!

例如,如果我有“1.jpg, 2.jpg, 3.jpg”,并且我想升级 2.jpg,我最终会得到:“2.jpg, 3.jpg”(2 和 3 Haven) t改了名字,1.jpg就消失了……)

非常感谢所有帮助!

4

1 回答 1

0

我不建议用这种方式对图像进行排序,它既低效,而且据我所知,如果人们继续排序,你最终会得到长而笨拙的文件名。您有权访问数据库吗?您可以在那里有一个表,它将索引映射到文件名,允许您通过更改表条目的索引进行排序。

于 2013-06-07T10:45:25.590 回答