Fichier corrompu download avec la fonction header

Petit nouveau ! | 6 Messages

24 mars 2015, 16:59

Bonjour à tous,

J'essaie de forcer le téléchargement d'un fichier de ma page web avec la fonction header(). Mon problème est que le fichier downloadé est concaténé avec le code html de ma page.
J'ai bien vérifié l'url de mon fichier avant de la passer à hearder().

Quelqu'un aurait-il une idée d'où peut venir mon problème ?

Merci d'avance,
mibrahimamadou

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 mars 2015, 23:33

Bonjour,

Ça serait plus simple si tu nous donnais les portions de codes que tu utilises.

A priori, je dirai qu'il faut que tu ajoutes un exit ou un die() dans ton code juste après l'envoi du fichier afin de ne pas envoyer le code HTML de ta page
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 1 Messages

25 mars 2015, 05:15

Merci de ta réponse, j'ai réglé le problème j'envoyais seulement le non du fichier et non le path au complet et maintenant ça fonctionne, et j'ai rajouté exit et les 2 br ce un bug du copier-coller.

Petit nouveau ! | 6 Messages

27 mars 2015, 17:59

Bonjour à tous,

Mon sujet a été clôturé pour la réponse d'une autre personne ... Je comprends pas trop.
@rthur merci pour ta réponse mais je continue à avoir le même problème .
Voisi mon code:

if (isset($_POST['ZONE'])) {

switch($ZONE) {
case 'EMEA':
$file = 'fichier_emea.txt';
break;

case 'APAC':
$file = 'fichier_apac.txt';
break;

case 'AMER':
$file = 'fichier_amer.txt';
break;

default:
$file_url = '';

}

}


$file_url = $sSiteURL . "/".$file;
exit;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
readfile($file_url);
?>
Quand j'ajoute exit apres l'envoi du fichier, j'ai pas le téléchargement.
J'ai tester l'url en faisant echo, j'ai le bon path pour mes fichiers. Et quand j’enlève la fonction header, j'ai le bon contenu du fichier qui s'affiche sur ma page après le readfile().

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 mars 2015, 18:16

Au temps pour moi, je n'avais pas vu que c'était un autre utilisateur qui avait répondu que ça fonctionnait à ta place ! Et doc j'ai mis le sujet en résolu à trop vite ;)

Le exit; il faut le mettre après le readfile()

Où se trouve le code HTML qui est renvoyé par erreur ?
Quand tout le reste a échoué, lisez le mode d'emploi...