У меня есть эта странная проблема.
У меня есть файлы с именами 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 просто исчезли...)
Вся помощь очень ценится!