un petit exemple pour des fichiers mp3 :
- // download.php
- set_time_limit(0);
- $filePath = '/chemin_serveur/Track-01.mp3';
- $newName = '01-Titre.mp3';
- header('Content-Type: audio/mpeg');
- header('Content-Disposition: attachment; filename="' . $newName . '";');
- header('Content-Transfer-Encoding: binary');
- header('Content-Length: ' . filesize($filePath) );
- @readfile($filePath) or die('Echec...');
- Le content-disposition "attachment" indique au fureteur qu'il faudra faire afficher la fenêtre "Enregistrer sous" et proposera le nom indiqué dans la variable $newName.
- La fonction filesize() s'assurera d'initialiser l'entête content-length à la taille réelle du fichier.
- @readfile or die : on pourrait mieux controler la lecture du contenu du fichier, en vérifiant d'abord s'il existe avec la fonction file_exists().
- En indiquant set_time_limit(0), on spécifie au serveur qu'il devra diffuser sans interruption. Ceci n'est pas recommandé, il est préférable d'indiquer un temps plus approprié.
<a href="download.php?track=1">Télécharger la première pièce</a>