Bonjour,
Je suis à développer un mini-projet permettant l'upload d'un fichier dans un répertoire (saisi en dur dans le code).
J'ai suivi le manuel Zend Framework concernant le type file mais... Ça ne fonctionne pas.
application/default/view/scripts/index/index.phtml
Code php : 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 <?php /** * Default home page view * * @author * @version */ $this->headTitle('Formulaire upload'); $this->placeholder('title')->set('test sur formulaire'); ?> <?php echo $this->form;?>
application/default/controllers/IndexController.php
Code php : 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134 <?php /** * IndexController - The default controller class * * @author * @version */ require_once 'Zend/Controller/Action.php'; class IndexController extends Zend_Controller_Action { private $form; public function init() { //Création d'une instance de Formulaire Zend_Form $form = new Zend_Form; //Spécification de l'action vers laquelle on renvoi le submit du form $form->setAction('index/traitementupload') //Spécification de la méthode d'envoi des informations ->setMethod('post') //On attribue un ID au formulaire ->setAttrib('id', 'unFormulaire') ->setAttrib('name', 'unFormulaire') //Ne pas oublier l'enctype ->setAttrib('enctype', 'multipart/form-data'); //On instancie un objet qui sera le input type = "file" $upload = new Zend_Form_Element_File('inputUpload'); $upload ->setRequired(TRUE) ->setMultiFile(1); //Ajout du type file au form $form->addElement($upload); //On instancie un objet qui sera le input type = "submit" $submit = new Zend_Form_Element_Submit('Ajouter'); //Ajout du type submit au form $form->addElement($submit); $this->form = $form; } /** * The default action - show the home page */ public function indexAction() { //On associe le formulaire à la vue $this->view->form = $this->form; } public function traitementuploadAction() { //Le formulaire a-t-il été soumis ? if ($this->_request->isPost()) { echo 'Formulaire soumis<br />'; //On récupère les données du formulaire $donneesFormulaire = $this->_request->getPost(); //Si les données sont correctes selon les validateurs if ($this->form->isValid($donneesFormulaire)) { echo 'Formulaire valide<br />'; //On va uploader le fichier $upload = new Zend_File_Transfer_Adapter_Http(); //Quel est le chemin de destination du fichier ? $upload->setDestination('C:\temporaire\\'); try { //On tente de récupérer le fichier $upload->receive(); } catch (Zend_File_Transfer_Exception $e) { //Une exception est levée $e->getMessage(); } //On affiche les informations sur le fichier uploadé //Récupération du nom du fichier à partir de l'élément file du formulaire $name = $upload->getFileName('inputUpload'); //On récupère la taille du fichier $upload->setOptions(array('useByteString' => false)); $size = $upload->getFileSize(); //On retourne le type mime du fichier $mimeType = $upload->getMimeType('inputUpload'); //Il faut maintenant afficher les diverses informations sur le fichier echo' Nom du fichier : '. $name. '<br />'. 'Taille : '. $size. '<br />'. 'Type Mime : '. $mimeType; //Il est possible de renommer le fichier mais avant, on en fait une copie copy('C:\temporaire\\'.$name, 'C:\temporaire\\'.$name.'.old'); $renameFile = $name.rand(1,100); $fullFilePath = 'C:\temporaire\\'.$renameFile; // Rename uploaded file using Zend Framework $filterFileRename = new Zend_Filter_File_Rename(array('target' => $fullFilePath, 'overwrite' => true)); $filterFileRename -> filter($name); } else { echo 'Formulaire invalide... Il lui manque un bras ?<br />'; } } else { echo 'formulaire insoumis... Rebellion !'; // Si aucune donnée n'a été transmise $this->form->populate($donneesFormulaire); } //On associe le formulaire à la vue $this->view->form = $this->form; //On reprend la vue de l'index return $this->render('index'); } }
Le useByteString me renvoie :
getFileSize() ainsi que getMimeType() ne sont pas reconnues...exception 'Zend_File_Transfer_Exception' with message 'Unknown option: useByteString = ' in C:\php_dev\Formulaire\library\Zend\File\Transfer\Adapter\Abstract.php:535 Stack trace: #0 C:\php_dev\Formulaire\application\default\controllers\IndexController.php(86)
Il ne me manque que ça pour finaliser mon petit module d'upload ^^
Vous voyez là où se situe le problème ?
Partager