Переименование дубликатов файлов в папке с php

Кто может помочь мне решить следующую проблему? Вот в чем проблема: в форме POST я заставил людей загружать файлы. В приведенном ниже коде проверьте, есть ли в папке «uploads» другой файл с тем же именем. Если это так, файлы будут переименованы в этот пример:

hallo.txt 1_hallo.txt 2_hallo.txt 

… и так далее.

Это используемый код:

 $OriginalFilename = $FinalFilename = $_FILES['uploaded']['name']; // rename file if it already exists by prefixing an incrementing number $FileCounter = 1; while (file_exists( 'uploads/'.$FinalFilename )) $FinalFilename = $FileCounter++.'_'.$OriginalFilename; 

Я хотел бы переименовать файлы по-другому. прогрессивные числа должны быть ПОСЛЕ файла и, разумеется, до расширения. Это тот же пример раньше, но так, как я хочу:

 hallo.txt hallo_1.txt hallo_2.txt 

… и так далее.

Как я могу изменить код для достижения этого результата? Спасибо заранее и извините за мой вопрос в стиле новичка. Я действительно новичок! 🙂

Мат

Solutions Collecting From Web of "Переименование дубликатов файлов в папке с php"

Просто измените $FinalFilename :

 $FinalFilename = pathinfo($OriginalFilename, PATHINFO_FILENAME) . '_' . $FileCounter++ . '.' . pathinfo($OriginalFilename, PATHINFO_EXTENSION); 

Или (лучше, если у вас много файлов с одинаковым именем и часто повторяется несколько раз):

 $filename = pathinfo($OriginalFilename, PATHINFO_FILENAME); $extension = pathinfo($OriginalFilename, PATHINFO_EXTENSION); while (file_exists( 'uploads/'.$FinalFilename )) $FinalFilename = $filename . '_' . $FileCounter++ . '.' . $extension;