我有这个奇怪的问题。
我的文件名为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没有改变他们的名字,1.jpg只是消失了......)
非常感谢所有帮助!
答案 0 :(得分:0)
我不推荐这种方式对图像进行排序,效率低下,据我所知,如果人们继续排序,你最终会得到冗长而笨拙的文件名。 你有权访问数据库吗?您可以在那里有一个表,它将索引映射到文件名,允许您通过更改表条目的索引进行排序。