Bonjour,
J’ai créer un site web sur lequel on a la possibilité de télécharger de fichier mp3. Tout fonctionne bien, mais pas sur Android.
Lorsque les fichiers audio font plus d’une heure, le nom du fichier ne correspond pas à celui que j’ai mis dans header('Content-Disposition: attachment; filename="'.$file->getName().'"');
, mais au nom réel de fichier sur le serveur. Pourtant sur les petits fichier audio, ça fonctionne parfaitement !
Ensuite, deuxième problème, sur android une fois le fichier télécharger, il n’apparait pas dans la bibliothèque musical (Il n’est pas reconnu comme fichier audio, pourtant j’arrive bien le lire avec les utilitaires audio). Ceci a été testé sur plusieurs téléphone android, le résultat est identique. Et j’ai testé en téléchargeant un fichier audio ailleurs sur le net, et la ça fonctionne.
Mon script de téléchargement (Les fichiers sont stocké sous la form 59357962d7583.mp3
le serveur):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php $file_path = FILE_LOCATION.$file->getUniqid().'.mp3'; if(!file_exists($file_path)) Wx_Errors::setAndShowError(500); header('Content-Description: File Transfer'); header('Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3'); header('Content-Disposition: attachment; filename="'.$file->getName().'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file_path)); if(filesize($file_path) < 20971520) { @readfile($file_path); }else{ $chunkSize = 1024 * 1024; $handle = fopen($file_path, 'rb'); while (!feof($handle)) { $buffer = fread($handle, $chunkSize); echo $buffer; ob_flush(); flush(); } fclose($handle); exit; } |
Avez-vous une idée de pourquoi j’ai ceci ?
Merci.