Forcer download

le_foy Messages postés 2 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 26 mars 2004 - 25 mars 2004 à 23:46
Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008 - 11 oct. 2006 à 02:27
salut

En fait j'ai le code pour forcer l'explorateur a ouvrir une fenetre pour telecharger un fichier mais je voudrai sauter cette etapes et passer directement a la fenetre qui demande le chemin d'acces ou on veut sauvegarder le fichier qqun a une idee.

foy

8 réponses

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
26 mars 2004 à 08:23
Bonjour,

Ce n'est pas possible c'est le navigateur qui gère ca.

@+
Arnotic,
Admin CS, MVP Visual C++
0
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
26 mars 2004 à 13:16
a moi que tu t'applelles billou et tu sorte exlporateur 7.0
non ct pas possible ct intégré à explorer
\-> Defkrie !?!
0
le_foy Messages postés 2 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 26 mars 2004
26 mars 2004 à 13:39
Ok d'accord en fait la raison pour laquelle j'ai posee cette question est que j'ai un probleme avec le telechargement lorsque je clic sur le lien que je veux faire telecharger sur le site alors la boite de download s'ouvre avec ouvrir, sauvegarder... pour ce qui est de sauvegarder pas de prob le fichier marche mais pour ce qui est de l'ouvrir sans le sauvegarder ben y ne trouve pas le fichier how bizarre enfin bon p etre que vous avez une idee sur le pourquoi du comment de comment ca se fait.
c un fichier pdf et mon code est pour le fichier php:

?php

$fichier = '../assets/downloads/12things.pdf';
$nom_fichier = '12things.pdf';

header('Content-disposition: attachment; filename='.$nom_fichier);
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($fichier));
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($fichier);
?>

et g un lien ds ma page source
donc voila

foy
0
Angenoir Messages postés 3 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 8 avril 2004
8 avril 2004 à 13:57
J'ai exactement le même problème !! :(

Voici une partie de mon script :

// Exemple de variables :
// $name = "monfichier.zip";
// $mine_type = "application/zip";
// $file = "/chemin/complet/vers/monfichier.zip";

header("Content-disposition: attachment; filename=$name");
header("Content-Type: $mine_type");
header("Content-Transfer-Encoding: $mine_type\n");
header("Content-Length: ".filesize($file));
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile($file);

Il se trouve que ce script marche trés bien sur tout les navigateurs récents à une exception près : ce satané IE 6 !
Lorsque l'on clique sur le bouton 'ouvrir' avec IE 6 au lieu de 'enregistrer', on optient une erreur du type 'fichier introuvable'.
Apparement IE 6 essaye d'ouvrir le fichier avant de le télécharger ou quelque chose du style. Comme par hasard, cette erreur ne se produit pas lorsque l'on utilise un fichier de type Office (.doc,.xls,etc.).

J'ai essayé en vain plusieurs type de header mais rien n'y fait :(
On m'a dit d'enlever les header relatif au cache mais là aussi, rien n'y fait ?!

Quelqu'un sait-il comment contourner le problème ? ou quelqu'un a-t-il un script qui fonctionne à 100% ?

Merci pour votre aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ziquet Messages postés 2 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 13 octobre 2004
12 oct. 2004 à 17:22
J'ai exactement le meme pb et je m'en sort pas.

Il y a qd meme bien un moyen pour forcer le telechargement avec IE6 tout en gardant la fct "ouvrir" opérationnelle ?
Non ?

Si qqun à une idée !!!
0
cs_ziquet Messages postés 2 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 13 octobre 2004
13 oct. 2004 à 10:17
J'ai trouvé !

Je l'ai trouvé en constatant que sur phpmyadmin, lorsque l'on exporte une base de données au format CSV, il me propose une fenetre "ouvrir/enregistrer" (qui marche) alors que par défaut mon navigateur ouvre les cvs en interne (je parle d'un lien href classique là).

Je me suis dc dit "comment on t il fait pour forcer le téléchargement avec une fct ouvrir qui marche ?
J'ai été voir ds le code de phpmyadmin et g regardé les différences.

Voici une version du script qui marche sur IE pour l'ouverture :

************************************************************
header("Content-disposition: attachment; filename=".$nom_fichier);
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($chemin."/".$nom_fichier));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
readfile($chemin."/".$nom_fichier);
************************************************************

La seule différence, c le "no-store, no-cache" qui n'est pas présent.
D'ailleur il semblerait que la ligne cache-control soit facultative (à vérifier à long terme).

Et il semble logique que la pb vienne de là puisque l'erreur était bien un pb de cache avec IE.

Je ne sais pas pourquoi les plus gros forums ou sites donnent tous la version "problématique" de ce script alors qu'il existe une version plus simpliste qui marche mieux.

Après le "no-store, no-cache" a peut-etre un interet, perso je l'ai pas trouvé.

Voila, c t pour ceux qui auraient le pb.
0
jcrusot Messages postés 5 Date d'inscription mardi 17 août 2004 Statut Membre Dernière intervention 29 janvier 2005
21 janv. 2005 à 08:05
Afin de compliquer un peut, j'ai encore le problème du téléchargement forcé sous mac. Sur PC pas de problème, une fenêtre "ouvrir ou enregistrer" est proposée à l'utilisateur, mais sous MAC c'est le fichier download.php qui est téléchargé.
Quelqu'un aurait-il la solution ?
Merci
0
Florynth Messages postés 48 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 7 février 2008
11 oct. 2006 à 02:27
J'ai le même problème mais je ne me sert pas de "no-store,no-cache"

voici le code ($Doc est une classe que j'ai créé)

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: " . $Doc->P_Type);
header("Content-Disposition: attachment; filename="".$Doc->P_UserFileName . "." . $Doc->P_Ext . "";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$Doc->P_Size);
readfile($Doc->GetFullPath());

Si je fais enregistrer ça marche mais pas ouvrir et ce sur IE j'ai fait le test avec FireFox pis ça marche...

Merci de votre aide

Florynth
0
Rejoignez-nous