Savoir si un nom de fichier existe sans son extension

Le problème exposé dans ce sujet a été résolu.

Bonjour,
J’ai un dossier dans lequel se trouve des images au format png ou jpg. Elles sont nommées à partir de l’id de l’utilisateur qui l’a envoyé (par exemple : 5df69wB.png). L’utilisateur ne peut envoyer qu’une seule image, il me faut donc un moyen de supprimer l’ancienne image correspondant à cet id sans tenir compte de l’extension si cette image existe.
Je sais qu’il faut que j’utilise la fonction unlink de PHP. Pour ça il me faut donc l’extension du fichier, si c’est png ou jpeg/jpg pour pouvoir ensuite le supprimer. Mais comment avoir l’extension du fichier ?

Merci à vous. :)

Salut,
Je vois plusieurs moyens:

  • Enregistrer dans la base de donnée l’extension lors de l’enregistrement
  • Faire une boucle de recherche avec toutes les extensions (Pas terrible)
  • Ou alors utiliser la fonction glob de php qui d’après la doc sert à ça, mais je ne l’ai jamais utilisé.

L’utilisation d’une base de donnée est fortement conseillé comme l’indique WinXaito.

Si tu ne souhaites pas faire de base de donnée tu as scandir ou glob glob("filename.*");. Pour optimiser cette 2ème solution tu peux faire comme symfony. En créant 2 sous dossiers pour réduire le nombre de fichier dans les dossiers, comme ceci :

1
2
3
4
5
<?php
    echo $file; // 5eedcc66e8387eea
    $hash = hash("sha256", realpath($file));
    $fullpath = "cache/config/".substr($hash, 0, 2)."/".substr($hash, 2, 2)."/".substr($hash, 4).".php";
        // cache/config/5e/ed/cc66e8387eea.php
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte