Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Resolu] fichier uploader

Posted by Yann.L on 07/16/2008 11:26

Bonjour a tous,

j'aimerai savoir comment acceder à un fichier uploader. Dans mon cas, il s'agit d'effectuer un traitement sur un fichier que l'utilisateur vient d'uploader:

j'essai d'y acceder par:

 JELIX_APP_PATH.'var/uploads/monmodule~controler/monfichier.xls'

mais ça n'a pas l'air de fonctionner.

Voici le code de mon action:

 function sauver(){
 $form = jForms::fill("budget~import");
 $form->saveFile('xls');       
 $excel = new SpreadsheetExcelReader();
 $excel->setOutputEncoding('CP1251');
 $excel->read(JELIX_APP_PATH.'var/uploads/budget~import/tdb2008.xls');
 // Début traitement des données du classeur Excel
 // ...
 // Fin traitement des données du classeur Excel        
 $rep = $this->getResponse('redirect');
 $rep->action = 'budget~default:index';
 return $rep;
 }

et le message d'erreur correspondant:

 Fatal error: Call to a member function read() on a non-object in F:\wamp\www\jelix\lib\class\SpreadsheetExcelReader.class.php on line 388

ma classe SpreadsheetExcelReader() fonctionne dans le cas d'un test autonome, comme par exemple :

 <?php 
 require_once 'Excel/SpreadsheetExcelReader.class.php';
 $excel = new SpreadsheetExcelReader();
 $excel->setOutputEncoding('CP1251');
 $excel->read('Book1.xls');
 //$excel->sheets[numero de feuille commence a 0]['cell'][num ligne]  [num colonne]
 echo $excel->sheets[0]['cells'][1][1];
 echo ' ';
 echo $excel->sheets[0]['cells'][1][2];
 echo ' ';
 echo $excel->sheets[0]['cells'][2][1];
 echo ' ';
 echo $excel->sheets[1]['cells'][1][1];
 ?>

Merci.

  [Opened] Re: fichier uploader

Reply #1 Posted by laurentj on 07/16/2008 11:32

Salut,

Tu as vérifié que le fichier existait bien après coup dans le répertoire que tu indiques ? Le répertoire uploads est il modifiable par le user apache ?

  [Opened] Re: fichier uploader

Reply #2 Posted by Yann.L on 07/16/2008 11:34

Salut,

oui le fichier existe bien, et le user apache a tous les droits sur le dossier upload.

merci.

  [Opened] Re: fichier uploader

Reply #3 Posted by Yann.L on 07/16/2008 14:11

Voila ce que me donne la chaine:

 F:\wamp\www\jelix\tdb\var/uploads/budget~import/16-07-2008.xls

J'ai remplacé par

 JELIX_APP_PATH.'var\uploads\budget~import\tdb2008.xls' 

Et ça fonctionne.

Merci.

  [Opened] Re: [Resolu] fichier uploader

Reply #4 Posted by Le_Trurc on 07/17/2008 19:57

Bonjour Yann,

Je pense que tu as prévu le coup, mais... Si ton environnement de production tourne sous un système Unix, j'ai peur que l'URL ainsi formée ne fonctionne plus.

Cela pose un sérieux problème de portabilité, soit dit en passant... Serait-ce une erreur de configuration ?

@+

  [Opened] Re: [Resolu] fichier uploader

Reply #5 Posted by laurentj on 07/17/2008 23:23

Je trouve ça étrange moi aussi d'avoir à changer les slash, car dans le code de saveFile, j'ai aussi des / en dur, et il arrive apparement bien à sauver le fichier. Je me demande si le problème n'est pas dans SpreadsheetExcelReader tout simplement.

D'ailleurs, un truc, tu devrais plutôt faire ça :

 $excel->read(JELIX_APP_PATH.'var/uploads/budget~import/'.$form->getData('xls'));

Parce que je doute que le nom du fichier soit toujours tdb2008.xls :-)

Test aussi la valeur de retour de saveFile. True t'indique que le fichier est bien enregistré.

  [Opened] Re: [Resolu] fichier uploader

Reply #6 Posted by Yann.L on 07/22/2008 12:08

Bonjour, Effectivement le problème vient bien de la classe SpreadsheetExcelReader qui à l'origine permet de lire un fichier Excel disposé sur un partage réseau et que j'ai du adapter mais bon pas très bien vue que ça marché pas :D, mais maintenant c'est réglé, désoler d'avoir mis en cause Jelix ^^

Pour le:

 $excel->read(JELIX_APP_PATH.'var/uploads/budget~import/'.$form->getData('xls'));

je ne connaissais pas donc pour contourner le probleme je renomme le fichier xls avec la date du jour ^^.

merci pour votre aide.

 
Page
  1. [Resolu] fichier uploader