Переименуйте файл, если он уже существует – система загрузки php

Я этот код PHP:

<?php // Check for errors if($_FILES['file_upload']['error'] > 0){ die('An error ocurred when uploading.'); } if(!getimagesize($_FILES['file_upload']['tmp_name'])){ die('Please ensure you are uploading an image.'); } // Check filesize if($_FILES['file_upload']['size'] > 500000){ die('File uploaded exceeds maximum upload size.'); } // Check if the file exists if(file_exists('upload/' . $_FILES['file_upload']['name'])){ die('File with that name already exists.'); } // Upload file if(!move_uploaded_file($_FILES['file_upload']['tmp_name'], 'upload/' . $_FILES['file_upload']['name'])){ die('Error uploading file - check destination is writeable.'); } die('File uploaded successfully.'); ?> 

и мне нужно действовать как «вид окна» для обработки существующих файлов. Я имею в виду, если файл существует, я хочу, чтобы он был изменен на имя файла с номером 1 после него.

например: myfile.jpg уже существует, поэтому, если вы его снова загрузите, будет myfile1.jpg, и если myfile1.jpg существует, это будет myfile11.jpg и так далее …

как мне это сделать? Я пробовал несколько циклов, но, к сожалению, без успеха.

Вы могли бы сделать что-то вроде этого:

 $name = pathinfo($_FILES['file_upload']['name'], PATHINFO_FILENAME); $extension = pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION); // add a suffix of '1' to the file name until it no longer conflicts while(file_exists($name . '.' . $extension)) { $name .= '1'; } $basename = $name . '.' . $extension; 

Чтобы избежать очень длинных имен, вероятно, было бы аккуратно добавить число, например file1.jpg , file2.jpg т. Д.

 $name = pathinfo($_FILES['file_upload']['name'], PATHINFO_FILENAME); $extension = pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION); $increment = ''; //start with no suffix while(file_exists($name . $increment . '.' . $extension)) { $increment++; } $basename = $name . $increment . '.' . $extension; 
  1. Вы загрузили файл demo.png .
  2. Вы попытались загрузить тот же файл demo.png и он был переименован в demo2.png .
  3. Когда вы пытаетесь загрузить demo.png в третий раз, он снова переименовывается в demo1.png и заменяет файл, который вы загружаете (2).

так что вы не найдете demo3.png