Кто может помочь мне решить следующую проблему? Вот в чем проблема: в форме 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
… и так далее.
Как я могу изменить код для достижения этого результата? Спасибо заранее и извините за мой вопрос в стиле новичка. Я действительно новичок! 🙂
Мат
Просто измените $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;