Я этот код 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;
demo.png
. demo.png
и он был переименован в demo2.png
. demo.png
в третий раз, он снова переименовывается в demo1.png
и заменяет файл, который вы загружаете (2). так что вы не найдете demo3.png