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++;
}
15
demandé sur user2201765 2013-04-22 01:43:06

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++;
}
36
répondu Jason 2013-04-21 21:47:38

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";
}
3
répondu Fandi Susanto 2017-04-11 09:43:26

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

1
répondu Daniel Nyamasyo 2016-12-11 04:03:48