Forcer le download

Comment télécharger un fichier image, doc, xls ou autre sans qu'ils s'ouvrent dans le navigateur, quelqu'un peut-il m'en dire plus sur ce genre de script :

header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $nom_f . '"');
header('Content-Length: ' . filesize($filename));
header('Pragma: no-cache');
header('Expires: 0');
readfile($filename);

Merci de laisse un avis

A+ Xavier

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Oui, ca sers a rien, laisse les gens se debrouiller avec leur navigateur comme ils l'entendent!!!

    .  .
    \_/
    1. Ton script devrait marché, mais remplace le content-type : application/octet-stream par celui de ton fichier.
      1. Contributeur
        Des insomnies Bobi?

        .  .
        \_/
      2. Plus simple

        header('Content-type: application/force-download');
        header("Content-Disposition: attachment; filename=$nom");

        Bien dormi

        En revanche sur la création de vignette depuis une image jpeg plus délicat, toujours un problème de chemin
      3. teebo : même pas :-/

        Xav : Ce n'est pas plus simple, c'est moins complet.
        De plus "application/force-download" est aussi un content-type générique et il faut donc, autant que possible, éviter de l'utiliser.

        Autant prendre le content-type réel du fichier, ce qui permettra à tous les névigateurs de gérer au mieux ces fichiers sans mettre une extension abérante.

        Il te suffirait de mettre un paramètre $EXT = DOC ou XLS ou JPG...
        De le tester et d'afficher le bon content-type (voir la liste des content-type sur ce site je crois).