Intereting Posts

PHP Переименовать имя файла, если оно существует.

Я пытаюсь переименовать имя файла изображения, когда он загружен, если он существует, скажем, если мое имя файла test.jpg и оно уже существует. Я хочу переименовать его как test1.jpg а затем test2.jpg и так далее. С кодом, который я написал, это изменение моего имени файла, как и test1.jpg а затем test12.jpg любой совет по исправлению этого будет большим спасибо!

PHP

 $name = $_FILES['picture']['name']; $actual_name = pathinfo($name,PATHINFO_FILENAME); $extension = pathinfo($name, PATHINFO_EXTENSION); $i = 1; while(file_exists('tmp/'.$actual_name.".".$extension)) { $actual_name = (string)$actual_name.$i; $name = $actual_name.".".$extension; $i++; } в $name = $_FILES['picture']['name']; $actual_name = pathinfo($name,PATHINFO_FILENAME); $extension = pathinfo($name, PATHINFO_EXTENSION); $i = 1; while(file_exists('tmp/'.$actual_name.".".$extension)) { $actual_name = (string)$actual_name.$i; $name = $actual_name.".".$extension; $i++; } 

Вот небольшая модификация, которая, я думаю, должна делать то, что вы хотите:

 $actual_name = pathinfo($name,PATHINFO_FILENAME); $original_name = $actual_name; $extension = pathinfo($name, PATHINFO_EXTENSION); $i = 1; while(file_exists('tmp/'.$actual_name.".".$extension)) { $actual_name = (string)$original_name.$i; $name = $actual_name.".".$extension; $i++; } в $actual_name = pathinfo($name,PATHINFO_FILENAME); $original_name = $actual_name; $extension = pathinfo($name, PATHINFO_EXTENSION); $i = 1; while(file_exists('tmp/'.$actual_name.".".$extension)) { $actual_name = (string)$original_name.$i; $name = $actual_name.".".$extension; $i++; } 

Вдохновленный от ответа @Jason, я создал функцию, которую я считаю более коротким и более читаемым форматом имени файла.

 function newName($path, $filename) { $res = "$path/$filename"; if (!file_exists($res)) return $res; $fnameNoExt = pathinfo($filename,PATHINFO_FILENAME); $ext = pathinfo($filename, PATHINFO_EXTENSION); $i = 1; while(file_exists("$path/$fnameNoExt ($i).$ext")) $i++; return "$path/$fnameNoExt ($i).$ext"; } 

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

Во-первых, проверьте, существует ли имя файла изображения в папке с размещенным изображением, иначе загрузите его. Цикл while проверяет, существует ли имя файла изображения и добавляет уникальный идентификатор, как показано ниже …

 function rename_appending_unique_id($source, $tempfile){ $target_path ='uploads-unique-id/'.$source; while(file_exists($target_path)){ $fileName = uniqid().'-'.$source; $target_path = ('uploads-unique-id/'.$fileName); } move_uploaded_file($tempfile, $target_path); } if(isset($_FILES['upload']['name'])){ $sourcefile= $_FILES['upload']['name']; tempfile= $_FILES['upload']['tmp_name']; rename_appending_unique_id($sourcefile, $tempfile); } в function rename_appending_unique_id($source, $tempfile){ $target_path ='uploads-unique-id/'.$source; while(file_exists($target_path)){ $fileName = uniqid().'-'.$source; $target_path = ('uploads-unique-id/'.$fileName); } move_uploaded_file($tempfile, $target_path); } if(isset($_FILES['upload']['name'])){ $sourcefile= $_FILES['upload']['name']; tempfile= $_FILES['upload']['tmp_name']; rename_appending_unique_id($sourcefile, $tempfile); } 

Проверьте правильность переименования изображений