Page 1 sur 1

Forcer le téléchargement

Posté : 08 oct. 2008, 17:17
par PetarouxRay
bonjour,

Petit problème donc pour "forcer le téléchargement" d'un fichier. C'est à dire forcer l'affichage de la fenêtre "ouvrir ou enregistrer".
Dans ma page je met :
 <!php
    include 'forcer.php';
    forcerTelechargement('IMG/toto.ppt');
 !>
Et donc dans le fichier 'forcer.php' :
<?php
function forcerTelechargement($filename) {
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($filename) );
    header('Accept-Ranges: bytes');
    header('Content-Length: '.filesize($filename) );
    readfile($filename);
    exit();
}
?> 
Mon probleme c'est que le fichier source s'ouvre bien, mais le fichier télécharger demande une feuille css pour s'ouvrir :) je comprend rien.

a noter que j'utilise le CMS spip. le fichier source se trouve dans l'arborescence spip.

merci pour vos réponses

Posté : 08 oct. 2008, 19:19
par Aureusms
De kel type MIME s'agit -il ?

Posté : 09 oct. 2008, 12:29
par PetarouxRay
bonjour,

je ne sais pas trop ce qu'est un type MIME,

je dirais, apres avoir regarder un peu, celui ecrit : application/octet-stream

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 09 oct. 2008, 13:58
par Aureusms
Si tu indiques header('Content-Type: application/octet-stream');
le navigateur ne sachant de quel type MIME il s'agit va chercher et si il ne trouve pas va donner des trucs du genre que tu as eu...

Détermine le type MIME avant de lancer ta fonctio. Si ton visiteur veut un fichier excel (par exemple), tu sais bien qu'on peut savoir qu'il s'agit d'un fichier excel car il a l'extention .xls. Aussi tu isoles l'extention de ton fichier avec pathinfo (http://www.manuelphp.com/php/function.pathinfo.php). Ensuite tu ajuste la fonction header en fonction de l'extention et le tour est joué. Exemple :

<?php
$fichier = pathinfo('/www/htdocs/essai.xls');

$extention = $path_parts['extension'];

header("Content-type: application/$extention");
header("Content-Disposition: attachment; filename=".$path_parts['basename']);
...


?>

Posté : 09 oct. 2008, 14:35
par Invité
Merci Aureusms pour ta réponse.

Malheureusement, ca donne le même résultat.
Je pense maintenant que ca vient plus d'un problème lié a l'utilisation du CMS SPIP.
J'ai testé avec un fichier "hors arborescence" SPIP, et ca fonctionne.

Je vais donc posé cette question sur un forum spip

encore une fois, merci a toi

Posté : 09 oct. 2008, 15:13
par Aureusms
Aucun problème :wink:

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]