Bonjour, suite à bien des recherches j'ai pas trouvé de solution à mon problème.
Je suis débutant sur ZF, et je dois créer une application de gestion de restauration scolaire.
On me demande de pouvoir télécharger des fichier aux format CSV (excel) depuis une base de donnée.
j'arrive à convertir ma BD, mais j'arrive pas à renvoyé le fichier créer.
J'utilise les entête spéciale pour ça , a savoir 'Content-Type', 'Content-Disposition', 'filename'.
Le problème est que filename pointe bien vers le fichier, mais que lorsque la boite de dialogue s'ouvre, l'adresse à changé, les '\' on été changé par des '_', comme le fais l'url rewinting de zend.
Du coup je télécharge un fichier vide.
Je vous file des bouts de code pour mieux comprendre, voici la fonction du controlleur
et voici la fonction de mon singleton qui doit convertir le fichier
Code : 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 function exporterAction(){ $this->view->title = "Exporter une base de donnée"; if ($this->getRequest()->isPost()) { $this->_helper->viewRenderer->setNoRender(true); $this->_helper->layout->disableLayout(); $exportObject = IDSelf_Convert_CSV::getInstance(); header("Content-type: csv" ); header("Content-Type: application/octet-stream" ); header("Content-Disposition: attachment; filename=".$exportObject->convert($this->getRequest()->getPost('table'))->getAbsolutePath()); }else{ $table = new Table(); $this->view->tables = $table->fetchAll(); $this->render('exporterselect'); } }
enfin voici le .htaccess
Code : 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 public function convert($bdname){ $select = Zend_Db_Table_Abstract::getDefaultAdapter()->select()->from($bdname); $data = Zend_Db_Table_Abstract::getDefaultAdapter()->fetchAll($select); $fd = fopen($this->getRelativePath(), 'w+'); foreach ($data as $item) { fputcsv($fd, $item, ';', '"'); } rewind($fd); $csvContent = stream_get_contents($fd); fclose($fd); return $this; }
voilà, j'espère que vous pourrais m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 # Règles de réécriture pour Zend Framework RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteBase /test2 RewriteRule !\.(js|ico|gif|jpg|png|css|swf|PNG|pdf|doc|PDF|DOC|csv|CSV)$ index.php # Sécurité : Ne pas autoriser le parcours de répertoires Options -Indexes # Configuration PHP php_flag magic_quotes_gpc off php_flag register_globals off php_flag short_open_tag on
bye
Partager