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
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 :)
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);
?>
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);
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']
.