Forcer le telechargement php erreur étrange
nw.nain
-
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
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:
- Forcer le telechargement php erreur étrange
- Forcer demarrage pc - Guide
- Telechargement direct - Accueil - Outils
- Forcer la reinitialisation pc - Guide
- Forcer suppression fichier - Guide
- Forcer à quitter - Guide
2 réponses
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 ?
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 ?
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 ...
$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 ...