Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2006, 23h38   #1
Invité de passage
 
Inscription : août 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 16
Points : 4
Points : 4
Par défaut Forcer un téléchargement, ok, mais ensuite, ca bloque le site

Bonsoir !

J'ai effectué plusieurs recherches pour "forcer" le téléchargement d'un fichier.
Ceci marche bien, cependant, lorsque le téléchargement débute, il est impossible de naviguer sur le site, le naviguateur tourne en boucle.
Une fois le téléchargement fini, il est enfin possible de naviguer à nouveau.

Nous étions 2 a naviguer sur le site, et lorsque l'un de nous deux téléchargait, alors nous étions tous deux bloqués sur les pages actuelles.

Je pense que c'est la page "telecharger.php" qui me fait planter :

Citation:
header("Content-disposition: attachment; filename=$NomDefaut");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: $type\n"); // Surtout ne pas enlever le \n
header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger));
header("Pragma: no-cache");
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header("Expires: 0");
readfile($chemin . $Fichier_a_telecharger);
J'ai essayé de mettre un "exit()" et "break" juste après le readfile, mais rien n' fait.

Je tiens également à préciser que ca me fait ca que sur le domaine qui utilise ce script. J'ai plusieurs sites dessus, et les autres sont "naviguables", donc la machine n'est pas plantée...

Je vous remercie d'avance !
lepec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 03h37   #2
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
Je ne suis pas assez bon pour t'explqier, mais j'ai trouvé cela sur le net et cela fonctionne correctement :
Code :
1
2
3
4
5
	$taille = filesize('chemin/'.$fichier);
	header('Content-Type: application/octet-stream');
	header('Content-Length: '.$taille);
	header('Content-Disposition: attachment; filename="'.$fichier.'"');
	readfile('chemin/'.$fichier);
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 04h59   #3
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Peut-être devrais-tu mettre ce code dans un script à part et tenter de l'exécuter en arrière-plan :

http://www.developpez.net/forums/sho...d.php?t=171540
http://www.developpez.net/forums/sho...d.php?t=107580

[EDIT] Voici ce qui est conseillé dans la FAQ :
http://php.developpez.com/faq/?page=..._forcedownload
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 08h43   #4
Invité de passage
 
Inscription : août 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 16
Points : 4
Points : 4
Citation:
Envoyé par francis m
Je ne suis pas assez bon pour t'explqier, mais j'ai trouvé cela sur le net et cela fonctionne correctement :
Code :
1
2
3
4
5
	$taille = filesize('chemin/'.$fichier);
	header('Content-Type: application/octet-stream');
	header('Content-Length: '.$taille);
	header('Content-Disposition: attachment; filename="'.$fichier.'"');
	readfile('chemin/'.$fichier);
C'est à peu prêt le code que j'avais, et ca bloque toujours le site. Dès que le téléchargement est fini... ca marche !
Une mauvaise config de php.ini ? Ou de apache ?

Citation:
Envoyé par Sub0
Peut-être devrais-tu mettre ce code dans un script à part et tenter de l'exécuter en arrière-plan :

http://www.developpez.net/forums/sho...d.php?t=171540
http://www.developpez.net/forums/sho...d.php?t=107580

[EDIT] Voici ce qui est conseillé dans la FAQ :
http://php.developpez.com/faq/?page=..._forcedownload
J'ai essayé de mettre la page de téléchargement en fond de tâche, mais à ce moment là, aucune fenetre de téléchargement ne s'ouvre...
Et j'ai mit le code de la faq, rien ne se passe, sauf si je met "readfile(...)", à la fin. La aussi, le site reste bloqué (je possède un dédié pourtant).

En tout cas, merci pour vos réponse !
lepec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2006, 09h24   #5
Invité de passage
 
Inscription : août 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 16
Points : 4
Points : 4
J'ai trouvé d'ou venait mon erreur.

Ma page "telecharger.php" ou était les header faisait un include vers un fichier de connexion.

Citation:
session_start ();
$myhote="xxx";
$myuser="xxx";
$mypass="xxx";
$IdBase = mysql_connect($myhote, $myuser,$mypass);
$Base = "xxx";
mysql_select_db($Base,$IdBase) ;
En enlevant "session_start()", tout marche parfaitement !
Je savais qu'il ne fallait pas mettre d'html, mais je ne pensais pas aux sessions !
Ceci n'est pas précisé dans la FAQ, ca peut être intéressant, n'ayant pas vu de solutions sur le net !

Merci de votre aide en tout cas !
lepec est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h20.


 
 
 
 
Partenaires

Hébergement Web