PHP renommer le nom du fichier S'il existe ajouter le numéro à la fin
j'essaie de renommer le nom de fichier d'une image lorsqu'il est téléchargé, si elle existe, dire si mon nom de fichier est test.jpg
et il existe déjà je veux le renommer test1.jpg
et test2.jpg
et ainsi de suite. Avec le code que j'ai écrit son changement de nom de fichier comme so test1.jpg
et test12.jpg
tout conseil sur la correction de ce serait un grand merci!
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++;
}
3 réponses
Voici une modification mineure qui je pense devrait faire ce que tu veux:
$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++;
}
inspiré de la réponse de @Jason, j'ai créé une fonction que j'ai jugé plus court et plus lisible le format de nom de fichier.
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";
}
Il y a plusieurs façons de renommer l'image en PHP Avant de télécharger sur le serveur. ajouter l'horodatage, l'id unique,les dimensions de l'image plus le nombre aléatoire etc.Vous pouvez les voir tous ici
tout d'abord, vérifiez si le nom du fichier image existe dans le dossier Image hébergé sinon téléchargez-le. La boucle while vérifie si le nom du fichier image existe et ajoute un id unique comme indiqué ci-dessous ...
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);
}
Vérifier plus d'images renommer la tactique