- 1
[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
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
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
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
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
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
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.
- 1