Bonjour à tous,

Je cheche depuis un moment la possibilité dans un même formulaire à pouvoir créer 3 champs d'uploads (2 pour des jpg et 1 pour un pdf).

Lorsque j'upload que des images, cela fonctionne très bien... mais dès que j'upload un pdf, ça bug ($this->request->data me retourne array() ) :(

Si j'upload juste un pdf tout seul, il me retourne un string avec le nom du pdf.

J'ai bien ajouté le type => 'file' lors du Form->create..

Voilà, si quelqu'un pouvait m'aiguiller ?

L'idée est donc, de pouvoir sur un même formulaire placer 3 champs (jpg, jpg, pdf).

Le plugin Media ne m'interesse pas dans ce cas-ci, car j'ai besoin de récupérer les noms et d'affecter également des destinations différentes.

Merci à tous ceux qui peuvent m'aider.

grafikfan

4 réponses


GrafikFan
Auteur
Réponse acceptée

Re B-Art,

Merci à nouveau pour tes précisions :)
Ce que tu as donné comme infos, je l'avais déjà essayé et j'avais toujours un array() vide.

J'ai copié tout le rép app/ sur un autre poste, et là ça fonctionne... du coup je me demande si ce n'est pas un problème de cache ? qui conservé certaines fonctions ou formulaires en mémoire pour ne pas prendre en considération de mes changements....

Dans tous les cas, je te remercie pour tes précieux conseils...

@+

GrafikFan

Salut GrafikFan,

Lors de ton upload tu peux créer une fonction qui vérifie l'extension du fichier avec pathinfo()

$info = pathinfo($filename);
        return strtolower($info'extension']) == 'pdf';

Et ensuite tu déplace ton fichier avec move_uploaded_file()

Pour le coup, le plugin Media ne fait pas exactement ce que tu veux mais tu peux t'en inspirer, voir le modifier! ;)

Bon dèv'

Salut B-Art,

Merci pour ta réponse mais comme je l'ai dis plus haut, si on upload simultanément des jpg et un pdf... le request->data est vide : array()

J'ai même été jusqu'à essayer d'ajouter les champs à la traditionnelle html à la suite des $this->Html->input() mais pareil... le request->data toujours vide.

il y a, je pense une incompatibilité des mime-type non ? comment faire pour que le formulaire considère qu'il y a des images à uploader et des pdfs à traiter en cakePhp ?

Encore merci pour m'avoir répondu.

GrafikFan

Salut GrafikFan,

Je ne suis pas un expert en CakePhp mais je ne pense pas que le problème vienne du type mime...

Ton fichier étant charger dans un répertoire temporaire j'essayerais de faire quelques chose comme ça:

//Si on a des données
if(!empty($this->request->data'TonModel']'Nomduchamp']'tmp_name'])){
    //Je récupère les informations du fichier
    $file = pathinfo(strtolower($this->request->data'TonModel']'Nomduchamp']'tmp_name']));
        //Si l'extension est jpg,jpeg ou png
        if(!in_array($file'extension'], array('jpg','jpeg','png'))){
            //Je déplace mon image vers le répertoire IMAGES en le renommant mon_identifiant.jpg
            move_uploaded_file($this->request->data'User']'avatarf']'tmp_name'], IMAGES. DS . $mon_identifiant . '.jpg');
        }elseif{
         //Si l'extension est pdf
        if(!in_array($file'extension'],'pdf')){
            //Je déplace mon image vers le répertoire FILES en le renommant mon_identifiant.pdf
            move_uploaded_file($this->request->data'User']'avatarf']'tmp_name'], FILES. DS . $mon_identifiant . '.pdf');
        }
}

Dans tout les cas, c'est surprenant que ton request->data renvoi un array vide si un fichier est bien charger.

Je ne vois pas d'où peux venir le problème...

J'espère que tu arriveras à le résoudre en tout cas!

Bon dèv'