Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1746 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème upload d'images

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème upload d'images

n°2200548
tompouss
Petit chat
Posté le 22-08-2013 à 12:32:20  profilanswer
 

Bonjour,
 
je m'arrache les chx à cause de l'upload d'images avec le framework CakePHP:
 
l'image est "à priori " bien stockée dans un répertoire temp mais le fichier n'est soit pas copié à l'endroit voulu, soit
n'est pas copié du tout
 
 

Code :
  1. function admin_add($id = null)
  2. {
  3.    //on vérifie le type de requete
  4.   if(($this->request->is('put')) || ($this->request->is('post')))
  5.   {
  6.    $this->request->data['Post']['user_id'] = $this->Auth->user('id');
  7.    $this->request->data['Post']['slug']= NULL;
  8.    $this->request->data['Post']['post_type_id'] = '2';
  9.    $image=$this->request->data['Post']['media_path'];
  10.    $this->Session->write('image_before_upload',$image);
  11.    $media_path=$this->upload_Image($image);
  12.    $this->request->data['Post']['media_path']=$media_path;
  13.    //on sauve le contenu en db, la méthode save fait une vérif auto avec les règles de validation (beforesave)
  14.    if($this->Post->save($this->request->data))
  15.    {
  16.     $this->Session->setFlash("L'article a bien été créé" );
  17.     //$this->Thumb->clear();
  18.    }
  19.    else
  20.    {
  21.     $this->Session->setFlash("Une erreur s'est produite lors de la sauvegarde de cet article" );
  22.    }
  23.   }
  24.   elseif ($id) //si aucune donnée n'est postée on reste dans l'action courante
  25.   {
  26.     $this->Post->id = $id;
  27.     //$this->Session->delete('post_id');  
  28.     $this->request->data= $this->Post->read();
  29.   }
  30.   else
  31.   {
  32.     $this->request->data = $this->Post->getDraft(2);
  33.     $post=$this->request->data;
  34.     $this->Session->write('draft_id', $post['Post']['id']);
  35.     //$this->Session->write('draft_media_id',$draft['Post']['media_id']);
  36.     //$this->Post->deleteDraft($draft['Post']['id']);
  37.     /*echo $this->Session->read('image_titre');
  38.     $post_id=$this->request->data['Post']['id'];*/
  39.   }
  40.   //on récupère les catégories et on les envoie à la vue
  41.   // logiquement dvrait se trouver dans controller Categories
  42.   //$this->loadModel('Category');
  43.   $categories_to_list['categories']= $this->Post->Category->find('list',array(
  44.            'fields' => array('category_name')));
  45.   $this->set($categories_to_list);
  46. }


 

Code :
  1. public function upload_Image($image)
  2. {
  3.    // on commence les tests de validation
  4.    if (!empty($image))
  5.    {
  6.      //$directory = $this->Image->checkUploadedFile($new_banner);
  7.      $file_name=$image['name'];
  8.      //on précise la destination de la bannière
  9.      //$destination = WWW_ROOT.'img'.DS.'banner'; => ok mais chemin absolu posera probleme online
  10.     //ok $destination = 'img'.DS.'banner';
  11.      //$destination = 'img'.DS.'uploads'.DS.date('Y').DS.date('m');
  12.      //$destination = 'uploads'.'/'.date('Y').'/'.date('m');
  13.      $destination = IMAGES_URL.DS.'uploads'.DS.date('Y').DS.date('m');
  14.      //$destination = 'img'.DS.'uploads'.DS.date('Y').DS.date('m');;
  15.      if(!is_dir($destination))  mkdir($destination, 0777, true);
  16.      $destination=$destination.DS.$file_name;
  17.      $origine=$image['tmp_name'];
  18.      //on copie l'image de son répertoire temporaire vers l'upload
  19.      if(move_uploaded_file($origine, $destination))
  20.      {
  21.       return $destination;
  22.      }
  23.    }
  24. }


 
 
 
merci pour votre aide


Message édité par tompouss le 22-08-2013 à 12:33:49

---------------
collectionneur de pâtes thermiques
mood
Publicité
Posté le 22-08-2013 à 12:32:20  profilanswer
 

n°2200550
tompouss
Petit chat
Posté le 22-08-2013 à 12:57:02  profilanswer
 


UPDATE:
 
avec ce code l'image arrive bien dans le répertoire voulu
Code: php
 
    $destination = IMAGES_URL.DS.'uploads'.DS.date('Y').DS.date('m');
 
par contre le chemin enregistré en DB n'est pas correct:
 
img/\uploads\2013\08\image.jpg


---------------
collectionneur de pâtes thermiques
n°2200552
tompouss
Petit chat
Posté le 22-08-2013 à 13:23:38  profilanswer
 

avec ca:
 
$destination = 'img'.DS.'uploads'.DS.date('Y').DS.date('m');
 
donne img\uploads\2013\08\image.jpg
 
mais du coup le chemin dans le browser n'est pas correct
 
il faut que je remplace les '\' des DS par des '/',
 
au moment de l'affichae
 
Mais je ne sais pas à quel est le meilleur moment faire ce traitement: avant l'enregistrement en db ou après, au moment de l'affichage ?
 
quid du passage en prod sur un serveur linux ?
 
EDIt
 
ok en faisant comme ca:
 
 
ca marche en faisant ceci pendant l'affichag:

Code :
  1. <?php if(isset($post['media_path']) && ($post['media_path'] != NULL))
  2.       echo $this->Html->image($post['media_path']='/' . trim(str_replace(DS, '/', $post['media_path']), '/')); ?>


 
est-ce une bonne solution?


Message édité par tompouss le 22-08-2013 à 14:46:03

---------------
collectionneur de pâtes thermiques

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème upload d'images

 

Sujets relatifs
probleme php raiderprobleme sur moteur de recherche sur page HTML
Problème de code Wordpress, le design fait des siennes![PHP] Problème de chemin relatif
Problème OnmouseoverCentrer deux images l'une à côté de l'autre
problème avec article dans la page membreProblème d'upload d'images
Probléme avec un script d'upload d'images 
Plus de sujets relatifs à : Problème upload d'images


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR