I’m working on my school project and I’m trying to output a mp3 file using PHP but apparently it just outputs some corrupt file and I have no clue why. I browsed the entire net to find a solution, but no.
<?php
$filename = 'audio/1/1.mp3';
if(file_exists($filename)) {
header('Content-Type: audio/mpeg');
header('Content-Disposition: filename="test.mp3"');
header('Content-length: '.filesize($filename));
header('Cache-Control: no-cache');
header("Content-Transfer-Encoding: chunked");
readfile($filename);
} else {
header("HTTP/1.0 404 Not Found");
}
?>
Can anyone explain this to me? That would be totally awesome!
Well the answer was way off and it wasn’t my script. Before any HTML tag I load all content, if custom headers are defined I only show the content (retrieved from templates)
For the templates i use ob_get_contents(), so in the actual template I echo/print data. For some reason ob_get_contents() doesn’t fetch that properly so that’s where it went wrong.
Now I define my headers in an array and the path of the content in another variable and call that.
Long story short:
ob_get_contents() doesn’t get binary content.
Thanks guys, definately going to give you thumbs up for the efford and rather useful information!