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

  [Opened] jResponseBinary - fichier corrompu après téléchargement

Posted by tamraz on 04/22/2014 10:13

Bonjour à tous,

Mon problème se produit après le téléchargement d'un fichier .xls généré par l'application. Le message d'erreur de microsoft excel est: "Le format et l'extension du fichier de "xxx.xls" ne correspondent pas, etc."

Après investigation j'ai constaté que le problème ne se trouve pas au niveau du fichier lui même mais lors de son téléchargement. Parce que j'ai créé 2 contrôleurs test dans l'application où se trouve le problème (A1) et dans une autre application (A2).

J'ai écrit le même code dans les 2 contrôleurs:

        $oResp                 = $this->getResponse('binary');
        $zExportFilePath       = '/chemin/vers/le/fichier.xls'; // le même chemin pour les 2 contrôleurs
        $tPath                 = explode(DIRECTORY_SEPARATOR, $zExportFilePath);
        $oResp->doDownload     = true;
        $oResp->mimeType       = 'application/excel';
        $oResp->outputFileName = $tPath[sizeof($tPath) - 1];
        $oResp->fileName       = $zExportFilePath;
        return $oResp ;

Dans (A1) il y a le message d'erreur que j'ai cité ci-dessus et dans (A2) le fichier s'ouvre normalement.

Quelqu'un a-t-il une idée sur les possibles raisons de ce bug dans (A1) ? C'est peut être dû à un problème de configuration mais j'ai comparé les configs des 2 applis, y a pas de grandes différences.

Merci d'avance

  [Opened] jResponseBinary - fichier corrompu après téléchargement

Reply #1 Posted by FapFap on 04/22/2014 11:47

Bonjour !

Moi je n'ai aucun soucis pour l'up/download. Voici le bout de code qui up :

tInterface::doSaveFile($form (le formulaire d'ajout avec le ctrl upload), $resultMission['daorec']->idMission, "missions");

static function doSaveFile($form, $id, $type)
{
    $form->saveAllFiles(jApp::wwwPath('../var/uploads/'.$type.'/'.$id.'/'));
}

Et voici celui qui down :

$rep = $this->getResponse('binary');
$rep->outputFileName = $this->param('name');
$rep->doDownload = true;
$rep->fileName = jApp::appPath() . 'var/uploads/mission/' . $this->param('id') . '/' .      $this->param('name');
return $rep;

Et mon xlsx s'ouvre correctement ;) Dans A1, il est bien upload ? Si oui, c'est un probleme avec ton chemin je pense.

  [Opened] jResponseBinary - fichier corrompu après téléchargement

Reply #2 Posted by tamraz on 04/22/2014 12:27

En fait les 2 contrôleurs test dans (A1) et (A2) téléchargent le même fichier (et donc même chemin). Mais lorsque je télécharge avec l'appli qui pose problème (A1) le fichier est corrompu. Ce qui n'est pas le cas avec (A2) qui télécharge le même fichier. Je sais plus si c'est une config que j'ai oublié de paramétrer ou un problème de droit sur le serveur, mais bon je continue mon investigation. Merci quand même pour ta réponse FapFap

  [Opened] jResponseBinary - fichier corrompu après téléchargement

Reply #3 Posted by tamraz on 04/22/2014 13:44

En fait le bug a été dû à une erreur bête d'encodage de fichier dans (A1). Certains fichiers ont été encodés en "UTF-8 +BOM" alors que normalement ils auraient dû être encodés en UTF-8 simplement.

  [Opened] jResponseBinary - fichier corrompu après téléchargement

Reply #4 Posted by tamraz on 04/22/2014 13:55

Encore merci à tous !
Ce problème peut être passé en statut "Résolu". ( je ne vois pas de bouton pour le faire ;-) )

 
Page
  1. jResponseBinary - fichier corrompu après téléchargement