Connexion
Menu Principal
Recherche
Message du rapport :*
Code de Confirmation*
0 + 2 = ?  
Entrez le résultat de l'expression
Maximum de tentatives que vous pouvez essayer : 10
 

Re: je PETE un cable ! (corruption de fichier)

Objet : Re: je PETE un cable ! (corruption de fichier)
par youpla123 sur 28/01/2012 02:35:36

Salut Swak,

je n'ai pas beaucoup de temps en ce moment,
mais je vais tenter de t'aider un peu.

je ne connais pas du tout xoops ni ses options de configuration,
alors je suis allé voir directement le code PHP.

en PHP on peut forcer l'encodage en iso avec le header suivant, mais c'est pour du texte/html

header('Content-Type: text/html; charset=iso-8859-1');

Or nous on veut télécharger un XLS, format binaire.

J'ai remarqué que le type mime n'est pas correct lorsqu'on télécharge un XLS.
exemple sur image jointe, firefox croit que c'est une image TIFF qui est téléchargé et non un XLS


le code se trouve dans la page dl_attachment.php et semble correct, il y a particulièrement cette ligne :

header('Content-Type: '.$mimetype);

je n'ai pas regardé comment est récupéré le $mimetype mais le résultat transmis au navigateur ne semble, lui, pas correct.


il faudrait modifier le code php de cette page pour déterminer le type mime en fonction de l'extension du fichier.

par exemple je remplacerais la ligne header ci-dessus par le bloc ci-dessous :


$path_parts = pathinfo($file_display);
$ext = strtolower($path_parts["extension"]);

// Determine Content Type
switch ($ext) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Content-Type: $ctype");


source de ce bout de code :
http://fr2.php.net/manual/fr/function.header.php#102175

je n'ai pas du tout testé, pas du tout le temps d'installer xoops et de faire les manipulations.

A voir, ou sinon voit si tu peux corriger le type mime.
Je pense que ça peut résoudre le problème.

A+ et bon courage
Site archivé nous le gardons en ligne pour références techniques https://www.boostycom.fr/