автоматическое увеличение числа в имени файла

Мои пользователи могут загружать картинки профиля, одну за другой, но так часто, как они хотят.

Давайте предположим, что пользователь 1 загружает изображение, этот код будет хранить его в моей папке загрузки:

<?php

$fileData = pathinfo(basename($_FILES["fileToUpload"]["name"]));

$fileName = 'user_id_#1#_profilepic_#' . uniqid() . '#.' . $fileData['extension'];

$target_path = "uploads/" . $fileName;

while(file_exists($target_path)) {
$fileName = 'user_id_#1#_profilepic_#' . uniqid() . '#.' . $fileData['extension'];
$target_path = ($_SERVER['DOCUMENT_ROOT'] . "uploads/" . $fileName);
}

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_path)) {

echo "The image was successfully uploaded. <a href='index.php'>Add another image</a>";
}
else {
echo "There was an error uploading the file, please try again!";
}

?>

Этот uniqid () необходимо заменить, потому что это кошмар, чтобы потом найти изображения в правильном порядке.

Я хочу, чтобы изображения после загрузки выглядели так:

user_id_#1#_profilepic_#1#.jpg
user_id_#1#_profilepic_#2#.jpg
user_id_#1#_profilepic_#3#.png
user_id_#1#_profilepic_#4#.gif
user_id_#1#_profilepic_#5#.jpg
and so on...

Как я могу это сделать? У меня пока нет идей.

1

Решение

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

$total_files = count(glob("./*",GLOB_BRACE)); // count files in directory
echo $total_files;

ИЛИ ЖЕ :

используйте текстовый файл, где вы записываете номер.

Например :
Вы загружаете файл пользователем:
Получить текущий номер в текстовом файле -> добавить +1 и переименовать файл с этим номером -> записать новый номер в текстовый файл.

Наилучшим способом должен быть уникальный идентификатор из записи базы данных, но вы, возможно, не используете БД.

Я надеюсь, что это поможет вам.

Хорошего дня !

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]