Forcer le telechargement php erreur étrange

nw.nain -  
 nw.nain -
Bonjour,
comme le dit le titre j'ai créer un petit script php qui force le téléchargement d'un fichier pour cela je me suis aider de plusieurs post sur plusieurs forum pour en arriver à cela :

fichier :Myfiles.php

echo '<tr id="fichier'.$Fichier.'">

<td><a href="download.php?nomFichier=' . $Fichier . '&namefi='.$namefi.'">'.$Fichier.'<td>
</tr>';



ce qui m'envoi dans : download.php

<?php

$nomFichier = $_GET['nomFichier'];
$urlComplete= "http://theflers.free.fr/userfiles/$namefi/".$nomFichier;


header('Content-type: application/force-download');
header('Content-disposition: attachment; filename="' . $nomFichier . '";');
header('Content-Transfer-Encoding: binary');
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
header('Content-Length: '.filesize($urlComplete));
flush();
readfile($urlComplete);

exit;

?>


donc pour teste ce que ça donne http://theflers.free.fr/myfiles.php?name=ercc


le soucis c'est que le fichier se télécharge au bon format etc etc mais arrivé sur l'ordinateur il est illisible
en effet si l'on télécharge un fichier texte il y a 2 erreurs php dedans :

<br />
<b>Warning</b>: filesize() [<a href='function.filesize'>function.filesize</a>]: Stat failed for http://theflers.free.fr/userfiles/28-ercc/scriptphp.txt (errno=2 - No such file or directory) in <b>/mnt/102/sda/5/0/theflers/download.php</b> on line <b>13</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /mnt/102/sda/5/0/theflers/download.php:13) in <b>/mnt/102/sda/5/0/theflers/download.php</b> on line <b>13</b><br />


le pblm c'est que j'ai tester $urlComplete c'est la bonne il télécharge bien le fichier mais voila ça marche pas ça fait qq temps que je cherche donc je fait appel à vous !

merci d'avance
A voir également:

2 réponses

le père
 
Bonjour

C'est la fonction filesize qui ne marche probablement pas sur les fichiers distants (je viens de jeter un coup d'oeil à la doc, ils ne sont pas bavards là-dessus)
D'où le premier message d'erreur.
Comme ce message d'erreur est envoyé au client, tu n'as plus droit aux headers, d'où le second message d'erreur.
Mais Le fichier que tu cherches à envoyer n'est pas sur le même serveur que ton script ?
0
nw.nain
 
si si je up tout sur un ftp les fichier php et tt se trouve a la racine du ftp et les fichier à télécharger se trouve dans le dossier /userfiles présent aussi a la racine après grace à
$urlComplete= "http://theflers.free.fr/userfiles/$namefi/".$nomFichier;
je trouve le fichier et jusque la ça marche

alors j'ai supprimer la ligne
header('Content-Length:'.filesize($urlComplete));

le téléchargement marche, mais qu'une partie essayer de télécharger l'image ( http://theflers.free.fr/myfiles.php?name=ercc )

je pense qu'il doit définir une taille par défaut au téléchargement et des que c est finit il stop du coup on a qu'une seul partie du fichier ? ou c'est autre chose :p mais ça marche pas et je ne sais toujours pas pourquoi ...
0