La suppression d'un fichier dans afterDelete() - CakePHP
J'ai un chargement de modèle contient les images téléchargées par l'utilisateur.
Dans le contrôleur, je vais appeler:
$this->Upload->delete($id);
Qui fonctionne très bien pour supprimer l'enregistrement de la base de données, mais j'aimerais aussi supprimer le fichier image correspondant.
J'en ai essayé beaucoup de choses différentes avec différentes variables..etc, et a trouvé ce lien à une question similaire, mais rien ne semble fonctionner - je ne peux même pas avoir à supprimer avec l'une de ces tentatives:
//at the bottom of my Upload model
function afterDelete() {
//NONE OF THESE WORK - is this even being called?
unlink('/img/uploads/rest_logo.jpg');
unlink('app/webroot/img/uploads/rest_logo.jpg');
unlink('/app/webroot/img/uploads/rest_logo.jpg');
unlink('img/uploads/rest_logo.jpg');
unlink(WWW_ROOT . 'img/uploads/rest_logo.jpg');
unlink(WWW_ROOT . '/img/uploads/rest_logo.jpg');
return true;
}
Évidemment je vais vouloir changer une dynamique de nom de fichier, mais pour l'instant, je ne peux pas le faire pour supprimer le fichier de codage en dur tous les différents chemins possibles que je peux penser.
Est-il un moyen de tester ce qu'il se passe dans le présent? Comme un écho ou... n'importe quoi?
Toute aide ou d'orientation est grandement apprécié.
votre appel
$this->Upload->delete($id);
devriez-vous pas être l'appel de $this->Upload->afterDelete($id);
& votre manque un argument dans la fonction $id
, ce qui devrait déclencher une erreur, avez-vous des rapports d'erreurs surAvez-vous des privilèges pour être en mesure de supprimer à partir de ce répertoire?
J'ai codé en dur juste pour voir si je pouvais obtenir pour travailler À TOUS les
Votre hypothèse est correcte,
afterDelete()
est déclenchée lorsque vous appelez delete
.OriginalL'auteur Dave | 2011-06-01
Vous devez vous connecter pour publier un commentaire.
Détail à propos de Fichier de l'Utilitaire
OriginalL'auteur thecodeparadox
J'ai essayé de supprimer un fichier dans afterDelete() et n'avait pas de problème..Il a travaillé pour moi..
Je ne sais pas quel est le problème avec votre code...Peut-être que votre problème est comment faire pour supprimer le fichier de même après son enregistrement a été supprimé. Pour cela, vous pouvez utiliser le beforeDelete fonction() pour stocker le nom de l'image dans une variable et ensuite l'utiliser dans afterDelete().
OriginalL'auteur Codeeater
C'est un
afterDelete
j'utilise et qui fonctionne parfaitement sur mon projet, essayez et vous verrez:OriginalL'auteur luchomolina
Je suppose que vous ne pouvez pas utiliser le débogage ou un normal echo print_r($val,1);. Vous pourriez mail vous-même les résultats de ce code avec la fonction php mail ():
Il devrait être quelque chose comme 0755.
Vous pouvez également l'écho de tout cela et place d'un die('mourir!'); à la fin de la fonction et regardez ce qui se passe.
De toute façon, si vous ne recevez pas un e-mail ou de l'exécution des arrêts, quelque chose est incorrect.
Par la voie, c'est probablement le droit chemin: unlink(WWW_ROOT . 'img/uploads/rest_logo.jpg');
OriginalL'auteur Robert Merten
Je vais vous donner ma solution. À la fin, vous pouvez voir que j'utilise le
unlink()
fonction et je peux vous assurer qu'il fonctionne.- Je utiliser cette fonction à l'intérieur d'un Composant par un autre groupe de ImageFunctions
Dans le contrôleur
Ce n'est pas une bonne approche parce que vous aurez à faire sue vous toujours et explicitement, de dissocier le fichier après la suppression.
OriginalL'auteur raultm