Bonjour à tous, dans une de mes application je récupère l'avatar d'un contact Gmail et je souhaite l'afficher, j'ai cependant un problème qui me rend complètement dingue depuis quelques temps déjà. Sur l'ancienne version de mon script tout fonctionne parfaitement mais sur la nouvelle version, pour laquelle la récupération et l'affichage de l'image son quasi identique, rien à faire ça ne fonctionne pas
Je vous donne donc les principaux extrait de mon code, si quelqu'un à une idée vraiment je suis preneur de tout
Je colle ici dans un premier temps le code qui ne fonctionne pas suivi de l'ancien qui lui fonctionne :
Ne fonctionne pas - Avatar.php :
Fonctionne - Avatar.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php class AvatarController extends Zend_Controller_Action { public function indexAction() { //Désactive le layout $this->_helper->layout->disableLayout(); //Récupére les variables $type = $this->_getParam('type'); $urlEncode = $this->_getParam('url'); $token = $this->_getParam('token'); if (!empty($type) || !empty($urlEncode) || !empty($token)){ //Décode l'url Gmail $urlDecode = urldecode($urlEncode); //Instancie un nouveau service (GMail, Yahoo, etc...) $service = My_ContactsGetter_Services::getService($type); //Récupére l'objet Avatar $avatar = $service->getAvatar($urlDecode, $token); //Modifie le header et insére les données $this->getResponse()->clearBody(); $this->getResponse()->setHeader('Content-Type', $avatar->getType()); $this->getResponse()->appendBody($avatar->getDatas()); } } }
Je fais ensuite appel à l'image de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php require_once 'contactsgetter/services/ContactGetterModule.php'; class ImageController extends Zend_Controller_Action { function indexAction() { $this->view->title = "image"; $this->_helper->layout->disableLayout () ; $type = $this->_getParam('type'); $URi = $this->_getParam('URi'); $token = $this->_getParam('token'); if (!empty($type) || !empty($URi) || !empty($token)){ $URi = urldecode($URi); $service = ContactGetterModule::getService($type); $imgBinaire = $service->getBinaryImage($URi, $token); $this->getResponse()->clearBody(); $this->getResponse()->setHeader('Content-Type', $imgBinaire->getType()); $this->getResponse()->appendBody($imgBinaire->getDatas()); } else{ // TODO } } }
Ce qui donne un lien de la forme suivante :http://localhost/shady_contacts/publ...vii9aIY_6C9mw/
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo '<img src='.$this->baseUrl().$contact->getAvatarUri().'/>';
ps : j'ai aussi récupérer les headers http des deux versions (je sais pas peut être que ça peux servir) la seul différence entre la version qui fonctionne et l'autre c'est la présence de cette ligne dans la version qui fonctionne :
Partager