Hello,
Je gère un site amateur destiné à des étudiants en sport. J'ai décidé de mettre sur le site qq échantillons musicaux que les élèves pourront télécharger pour monter une chorégraphie. Ces fichiers étant des .mp3, j'ai rapidement remarqué que mon pc préférait ouvrir directement les fichiers plutôt que de proposer une boite de dialogue offrant le choix entre "ouvrir" ou "télécharger" les fichiers. Après plusieurs heures de recherche, je suis tombé sur plusieurs scripts php qui permettaient de forcer le téléchargement. J'en ai testé plusieurs avec succès. Mais voilà, il y a un problème (sinon je ne posterais pas ce message

) Presque tous les fichiers sont, après le téléchargement, incomplets. Une fois le téléchargement terminé, les fichiers ne font que 450 à 500 ko alors qu'ils font à l'origine entre 1.7 et 2.5 mo. Les fichiers reproduisent les 30 premières secondes des morceaux alors qu'ils devraient durer ~2 ou 3 min.
Le problème peut-il venir de mon script php et notamment du header content-length?
Quelqu'un peut-il m'aider?
Voici le script utilisé:
<?
$file = $_GET['file'];
// Si le fichier existe
If(file_exists($file))
{
// extension du fichier
$decomp = explode(".",$file);
$extfichier = $decomp[count($decomp)-1];
// Fichiers PHP : Ne pas télécharger !!!
If($extfichier != "php" && $extfichier != "php3" && $extfichier != "htaccess")
{
// Envoi des Headers HTTP : recharge / type binaire / taille du fichier
header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Content-Type: octet-stream");
header("Content-Length: ".filesize($file));
// Juste le nom du fichier
$decomp = explode("/",$file);
$lefichier = $decomp[count($decomp)-1];
// Envoi du Header HTTP : Nom du fichier
header("Content-Disposition: attachment; filename=".$lefichier);
// Ouverture du fichier
$lecture = fopen($file,"r");
While(!feof($lecture))
{
// Lecture du fichier
$line = fread($lecture,255);
// Envoi du fichier vers le navigateur
Print($line);
flush();
}
}
Else
{
Print("Désolé, vous ne pouvez pas télécharger les fichiers au format PHP ");
Print("protection des données et copyright).");
}
}
Else
{
// Si le fichier n'existe pas
Print("Désolé, le fichier n'a pas été trouvé");
}
?>
D'avance, Merci pour vos réponses