Bonjour,

j'ai un problème avec un script. Sur une page j'ai un lien qui une fois cliquez créé un fichier. Ensuite, je veux que l'utilisateur puisse directement télécharger ce fichier.

Pour cela j'ai ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
$writer->writeTheFile($name['name'].'.po'); //crée le fichier
 
//la je veux forcer le téléchargement :
header('Content-Type: application/x-rar-compressed');
header('Content-disposition: attachment; filename='.$name['name'].'.po');
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile('files2');
exit();
Mon fichier créé se trouve dans le répertoire files2.
lorsque je clique sur le lien le fichier est bien créé, et firefox me propose de télécharger ce fichier (il a le bon nom) mais il est vide alors que le fichier sur le serveur est correct.
Je ne comprend pas pourquoi. Quelqu'un peut m'aider ?

Merci.


Je viens d'essayer en créant un fichier download.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<?
header('Content-Type: application/x-rar-compressed');
header('Content-disposition: attachment; filename='.htmlentities($_GET['file']));
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile('../files2/');
exit();
?>
et dans mon autre fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$writer->writeTheFile($name['name'].'.po');
?>
<script language='JavaScript'>
	document.location.href="libs/download.php?file=<?php echo $name['name'].'.po';?>"
</script>
Le résultat est le même


Je précise si je change readfile('../files2/'); par une adresse éronnée j'obtiens dans le fichier que je télécharge :
<br />
<b>Warning</b>: readfile(files2/) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in <b>/var/www/html/libs/download.php</b> on line <b>7</b><br />