Выходной mp3 с php

Я работаю над своим школьным проектом, и я пытаюсь вывести mp3-файл с помощью PHP, но, по-видимому, он просто выводит поврежденный файл, и я не знаю, почему. Я просмотрел всю сеть, чтобы найти решение, но нет.

<?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"); } ?> 

Кто-нибудь может мне это объяснить? Это было бы потрясающе!

 header('Content-Disposition: inline;filename="test.mp3"'); 

Это то, что вам не хватает в вашем заголовке () (у вас не было указателя «inline»). Content-Transfer-Encoding должен быть «двоичным», а не «chunked».

Изменить: используйте «встроенный», если вы хотите, чтобы он отображался в браузере (если есть возможности) или «вложение», если вы хотите принудительно загрузить.

вы можете попробовать заменить

  header («Content-Transfer-Encoding: binary»); 

линия с

  header («Content-Transfer-Encoding: chunked»); 

Ну, ответ был ушел, и это был не мой сценарий. Перед любым HTML-тегом я загружаю весь контент, если пользовательские заголовки определены, я показываю только контент (извлекаемый из шаблонов)

 <?php //get stuff if(empty($page->customHeader)): ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><?php print $page->title ?></title> </head> <body> <div class="container"> <div class="header"> </div> <div class="content"> <?php print $page->content ?> </div> <div class="footer"> </div> </div> </body> </html> <?php else: print $page->content; endif; ?> 

Для шаблонов я использую ob_get_contents (), поэтому в фактическом шаблоне я эхо / печатаю данные. По какой-то причине ob_get_contents () не извлекает это правильно, так что это не так.

Теперь я определяю свои заголовки в массиве и путь к содержимому в другой переменной и называю это.

 ... </html> <?php else: foreach($page->customHeader as $header) { header($header, true); } readfile($page->headerContent); endif; ?> 

Короче говоря: ob_get_contents () не получает двоичный контент.

Спасибо, ребята, определенно собираюсь дать вам большие пальцы вверх для блеска и довольно полезную информацию!