Problème de force download : où le mettre?

Signaler
Messages postés
4
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
21 août 2006
-
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
-
Bonjour à tous !

Voila j'ai un petit souci avec des liens que je veux rendre téléchargeable, j'ai un peu chercher et j'ai trouvé qu'en mettant un header() on pouvait rendre le fichier téléchargeable.
Mon problème est que je ne sais pas ou mettre ce header :
   header("Content-disposition: attachment; filename=$tot"); 
   header("Content-Type: application/force-download");
En fait j'ai une boucle qui parcourt un dossier où sont stockés des .doc, des .dot ou des .xls et qui crée des liens vers les fichiers trouvés et c'est ces fichiers que je voudrai rendre téléchargeable.
En fait il le sont déjà en fesant clic-droit : "Enregistrer la cible sous..." mais pas quand je clique-gauche dessus .
Ca vient peut etre du fait que j'utilise IE6 mais je suis obligé (je suis en stage et la boite n'utilise que ie6).

voila mon code :

<?php
$rep = "c:\\mon_dossier";
   if ($dir = opendir ($rep))
   {
      while ($file = readdir($dir))
      {
         // chemin complet vers le fichier pour creer un lien
         $tot =$rep."[file://%22.$file/ \".$file]; 
         if($file != '' && $file != '..' && $file != '.' && is_dir($tot)!=TRUE)
         {  
            // j'enleve l'extension pour l'affichage du nom du fichier
            $nom_file = substr($file,0,-4);
            // c'est le fichier pointé par ce lien que je veux 
            // rendre téléchargeable mais où mettre les 2 header() ???
            echo "<li>".$nom_file."</li>"; 
         }
      }
   }
   closedir ($dir);
}
?>

Voila j'espere que quelqu'un pourra/voudra m'aider parce que la je vois plus.
Merci

5 réponses

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Moi j'ai ça:
$file = basename( $path );
       
    header("Content-disposition: attachment; filename=$file");
    header('Content-Type: application/force-download');
    header("Content-Transfer-Encoding: application/octet-stream\n");
    header('Content-Length: ' . filesize($path) );
    header('Pragma: no-cache');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0, public');
    header('Expires: 0');
    readfile( $path );

Ou $path est le chemin complet ( dossier + nom du fichier )

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
4
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
21 août 2006

Re bonjour !

Merci de ta réponse mais ce n'est pas cela que je demande les 2 header() que j'ai mis permet a eux seul de télécharger le fichier. Le problème est que je ne sais pas ou les placer dans mon code pour que les fichiers contenu dans le dossier soient téléchargeables.
Quoi que j'essaye c'est toujours la page php qui est proposé au téléchargement lorsque le l'on clique sur le lien pour acceder à la page.
J'ai essayer avec ton code mais ça me fait la même chose

A+
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Ce code ouvre la boîte de téléchargement du fichier... Ce n'est pas ca que tu veux?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
4
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
21 août 2006

Bonjour

Bon j'ai pas du etre assez claire dans mon premier post. Le code pour ouvrir la boite de dialogue et tout je l'ai, sauf que je sais pas ou le mettre pour rendre les liens créés par ma boucle téléchargeable.
N'importe quoi que j'essaye c'est toujours ma page .php qui est proposé au téléchargement...

Ce que je voudrais si quelqu'un peut m'aider c'est savoir ou je doit mettre ce bout de code : 
      header("Content-disposition: attachment; filename=$tot"); 
   header("Content-Type: application/force-download");
pour que lorsqu'on  clique sur les liens de mes .doc la boite de dialogue s'ouvre.

Voila

A+
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Ce que je ferais:
A l'endroit où tu met ton www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"