Aide pour upload image avec imagine

Par xenos92, il y a 12 ans


Bonjour,
J'ai suivi attentivement les TPs sur la formation cakePhp mais je me retrouve face à un problème qui me bloque depuis plusieurs jours..
Donc j'ai un membre qui peut uploader un avatar, voici mon systeme qui fonctionne :

Controller Users :

<?php
App::uses('AppController','Controller');
class UsersController extends AppController{
    public function account(){
        if (!empty($this->request->data)) {
            $this->request->data'User']'id'] = $this->Auth->user('id');
            $this->User->create($this->request->data);
            if($this->User->validates()){
                $this->User->create();
                $this->User->save($this->request->data, true, array('avatarf','password','password2'));

                //Upload avatar utilisateur
                if(!empty($this->data'User']'avatarf']'tmp_name']))
                {   
                    $dest = IMAGES . 'avatars' . DS . ceil($this->User->id/1000);
                     if(!file_exists($dest))
                    {
                        mkdir($dest,0777,true);
                    }
                    //nom image
                    $dest .= DS . $this->User->id . '.jpg';
                    debug($dest);
                    move_uploaded_file($this->request->data'User']'avatarf']'tmp_name'], $dest);
                    $this->User->saveField('avatar', 1);
                }
                $user = $this->User->read();
                $this->Auth->login($user'User']);

                $this->Session->setFlash("Vos informations ont bien été modifiées","flash", array('class' => 'success'));
            }
        }else{
            $this->User->id = $this->Auth->user('id');
            $this->request->data = $this->User->read();
        }
    }

Le problème vient quand je veux faire intervenir la librairie Imagine, en effet si je rajoute la ligne ci dessous sous mon debug($dest):

require APP . 'Vendor' . DS . 'imagine.phar';

, mon upload d'image ne se fait plus "instantanément", je veux dire par là qu'après avoir soumis mon formulaire ma page devient blanche et Chrome me dit:
"Impossible d'afficher la page Web, car le serveur n'a envoyé aucune donnée.
blablabla
Code d'erreur : ERR_EMPTY_RESPONSE."

Et si je recharge encore la page là mon nouvel avatar apparait ... une idée ?

Pourtant si je fais un debug(get_defined_constant()), ça me retourne
'APP' => '/Applications/MAMP/htdocs/Monsite copy 2/app/',
Donc Imagine est bien chargé normalement non ?

3 réponses

xenos92, il y a 12 ans

Personne ? :(

lakamark, il y a 12 ans

J'ai déjà eu ce problème et est-ce que tu la essayer avec d'autre navigateur? comme par exemple Safaris. Je sais pas mais si tu as trouver une solution à ton problème j'aimerais le savoir. Car j'ai encore ce problème sur mon site web.

Lartak, il y a 12 ans

Bonjour xenos92. Si tu veux ne pas trop t'embêter, tu peux faire avec un Plugin, qui lui même a été élaboré par Grafikart et tu pourras regarder le codage pour mieux comprendre le système. Il y a même plusieurs Plugin pour l'upload de la part de Grafikart : [url=https://github.com/Grafikart/CakePHP-Upload]Plugin Upload[/url] : Permet l'upload unitaire de fichiers [url=https://github.com/Grafikart/CakePHP-Media]Plugin Media[/url] : Permet l'upload de fichiers, avec possibilité de définir le nombre de fichiers autorisés à l'upload pour chaque modèle dont le Plugin est utilisé (plugin le plus flexible des 2)** Par contre, je ne sais pas quelle version de CakePHP tu utilises, mais je sais qu'il y a des constantes propres à CakePHP qui ont changées, dont celle pour le root des images par exemple. En espérant t'avoir aidé, je te souhaite une bonne journée.