Bonjour,
Je suis entrain de développer un site web. j'ai un petit problème avec la l'effacement de l'image.

Voici la function beforeDelete() :

public function beforeDelete() {
        $file = $this->field('image');
        unlink(IMAGES.'carousel'.DS.$file);
        $f = explode('.',$file); 
        $ext = '.'.end($f);  
        $file =implode('.',array_slice($f,0,-1));
        foreach(glob(IMAGES.'carousel'.DS.$file.'_*.jpg') as $v){
            unlink($v);
        }
        return true;
    }

il me donne un résultat suivant :

Warning (2): unlink(/Users/mac-antoinelacasse/Desktop/musicalitymaker/app/webroot/img/carousel/2013/01/IMG-0044.JPG) [function.unlink]: No such file or directory [APP/Model/Carousel.php, line 28]

Pourtant l'adresse de l'image est bonne.

Merci de votre aide en avance.

5 réponses


pardon de corriger mais je penses qu'il est plus raisonnable de mettre ce contenu dans la fonction afterDelete()

Imagine que la suppression n'est pas marché?? l'id du post (ou je ne sais quel autres model) sera toujours présent et les images non!!!
par contre en utilisant l'afterDelete tu es sur que la suppression a eu lieu

Pour ce qui est de ton problème il ne trouve pas le fichier correspondant (je ne sais pas si tu es sur Linux) donc pense à enlever le premier slash et retester c'est peut être lui qui te pointe vers le root
Le soucis se trouvant apparement dans IMAGES
tu peux utiliser $this->webroot comme ci

unlink($this->webroot.'img'.DS.'carousel'.DS.$file);

Sinon tu peux également utiliser la fonction delete()

App::uses('File', 'Utility');

public function afterDelete() {
        $file = $this->field('image');
        unlink(IMAGES.'carousel'.DS.$file);
        $f = explode('.',$file);
        $ext = '.'.end($f); 
        $file =implode('.',array_slice($f,0,-1));
        foreach(glob(IMAGES.'carousel'.DS.$file.'_*.jpg') as $v){
            $file = new File(WWW_ROOT . '$v, false, 0777);
            $file->delete();
            //unlink($v);
        }
        return true;
    }
lakamark
Auteur

Désolé, ça ne fonctionne pas.

Quels sont les messages d'erreur affichés ?

lakamark
Auteur

Le message d'erreur est : Warning (2): unlink(/Users/mac-antoinelacasse/Desktop/musicalitymaker/app/webroot/img/carousel/) [function.unlink]: Operation not permitted [APP/Model/Carousel.php, line 28]

operation not permit pourrais venir des droits que tu as toi (ou le process et user www si tu es sur unix) sur le répertoire contenant les images :)
Je dis bien pourrais ca n'est qu'une supposition désolé de ne pas pouvoir faire plus