OVH Cloud OVH Cloud

Readfile et fichier downloade en partie

2 réponses
Avatar
Jeremie
Bonjour à tous,

J'ai mis en place un petit site où je propose des petites vidéos de 5
minutes.
Afin de forcer le téléchargement, je passe par un script contenant ceci :

<?php
$file=$_GET['f'];

//telechargement
$taille=filesize("$file");
header("Content-Type: application/octet-stream; name=\"$file\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $taille");
header("Content-Disposition: attachment; filename=\"$file\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile("$file");
exit();
?>

Le download s'initialise bien, mais après avoir télécharger environ 50 %
du fichier, le navigateur considère qu'il est arrivé à la fin du download.

Aurais-je une merde dans mes en-têtes ?

Merci d'avance pour vos réponses,

Jérémie

2 réponses

Avatar
TJ
On 2008-12-03, Jeremie wrote:
Bonjour à tous,



Bonjour,

J'ai mis en place un petit site où je propose des petites vidéos de 5
minutes.
Afin de forcer le téléchargement, je passe par un script contenant ceci :

<?php
$file=$_GET['f'];


^^^^^^^^^^^^^^^^^
Aucun contrôle sur la possibilité ou non de télécharger le fichier
passé en paramètre ? Si c'est fait en connaissance de cause pourquoi
pas.

//telechargement
[...]

Le download s'initialise bien, mais après avoir télécharger environ 50 %
du fichier, le navigateur considère qu'il est arrivé à la fin du download.



Ne serait-ce pas le serveur qui met fin à la requête (temps
d'éxécution maximum du script PHP par exemple) ? N'y a-t-il rien dans
les logs d'erreur du serveur HTTP ou celui de PHP ?

Aurais-je une merde dans mes en-têtes ?



Selon moi c'est peu probable, vérifie néanmoins si le Content-Length:
est cohérent ?
Avatar
Jeremie
>> <?php
$file=$_GET['f'];


^^^^^^^^^^^^^^^^^
Aucun contrôle sur la possibilité ou non de télécharger le fichier
passé en paramètre ? Si c'est fait en connaissance de cause pourquoi
pas.




J'ai juste allégé le code pour l'envoi sur le forum. J'ai une routine
qui s'occupe de vérifier tout ça.
//telechargement
[...]

Le download s'initialise bien, mais après avoir télécharger environ 50 %
du fichier, le navigateur considère qu'il est arrivé à la fin du download.



Ne serait-ce pas le serveur qui met fin à la requête (temps
d'éxécution maximum du script PHP par exemple) ? N'y a-t-il rien dans
les logs d'erreur du serveur HTTP ou celui de PHP ?



Malheureusemeent, je ne peux pas bien vérifier car en mutualisé ... :-(

Aurais-je une merde dans mes en-têtes ?



Selon moi c'est peu probable, vérifie néanmoins si le Content-Length:
est cohérent ?


Aucun souci de ce côté-là.