move_uploaded_file() Ne fonctionne pas

Par Jack88, il y a 9 ans


Bonjour,

J'ai un probleme avec cette methode.
Mon fichier que je souhaite enregistrer (image) ne s'enregistre pas dans mon dossier.
mon fichier s'enregistre bien dans ma bdd.

move_uploaded_file($data['Media']['file'],$dir.DS.$filename.$ext);

Mon debug de $data['Media']['file'] me donne bien son nom : shemaJV.png

et le debug de $dir.DS.$filename.$ext me donne :
/Applications/MAMP/htdocs/cakephp-GamingNews/app/webroot/img/2017/05/shemaJV.png

De l'aide please

5 réponses

alexyon, il y a 9 ans

tu as bien vérifié les droits du dossier cible (chmod) ?

Jack88, il y a 9 ans

oui il y a bien les droit d'ecriture.
(Je suis un peu le tuto sur cake PHP)
Par contre quand je fais mon debug de $data je n'est pas exactement comme lui.
J'ai juste un tableau avec file et name et lui a encore un autre tableau dans file avec la taille du fichier ect...moi j'ai rien

<?php function admin_index($post_id){ if($this->request->is('post')){ $data = $this->request->data; debug($data); $dir = IMAGES.date('Y'); if(!file_exists($dir)) mkdir($dir,0777); $dir .= DS.date('m'); if(!file_exists($dir)) mkdir($dir,0777); $f = explode('.',$data['Media']['file']); $ext = '.'.end($f); $filename = Inflector::slug(implode('.',array_slice($f,0,-1)),'-'); // Sauvegarde en Base de donnée $success = $this->Media->save(array( 'name' => $data['Media']['name'], 'url' => date('Y').'/'.date('m').'/'.$filename.$ext )); if($success){ move_uploaded_file($data['Media']['file'],$dir.DS.$filename.$ext); debug($dir.DS.$filename.$ext); ?>
alexyon, il y a 9 ans

voici mon code qui fonctionne...

if ($this->request->is('post')) { $extension = strtolower(pathinfo($this->request->data['name']['name'] , PATHINFO_EXTENSION)); $filename = strtolower($this->request->data['name']['name']); $tmpname = WWW_ROOT . "/files/" . $filename . ""; move_uploaded_file($this->request->data['name']['tmp_name'], $tmpname);
SimonDevelop, il y a 9 ans

Enfaite il récupérai le nom du fichier, mais pas le fichier en lui même qui se trouve dans ['tmp_name'] et non dans ['file'].

Jack88, il y a 9 ans

Merci pour vos reponses et d'avoir pris le temps de me repondre.

J'ai trouvé mon erreur.
Dans le formulaire de ma vue , j'ai oublié de mettre le type = file dans le create()
Je l'avais seulement mis dans le input apparament cela ne suffisait pas.

Du coup ca marche bien :)