Используя mime-тип audio / mpeg, вы говорите браузеру «выполнить действие по умолчанию с этим файлом». Например, если у вас есть файл jpg и установлен тип mime для изображения / jpeg, браузер прочитает файл jpg и отобразит его в окне браузера.
Решение состоит в том, чтобы вместо этого использовать приложение / данные mime-типа. Это позволит загрузить файл, оставив браузер вне его.
Это было бы
header("Content-type: application/data");
== Обновлено ==
Более полный подход
header("Content-type: application/data");
header("Content-Disposition: attachment; filename=$this->filename");
header("Content-Description: PHP Generated Data");
readfile($this->file);
Если вам нужен динамический читатель MIME, вы можете использовать это
$type = $this->get_mime_type($this->filename);
header("Content-type: " . $type);
...
private function get_mime_type($filename) {
$fileext = substr(strrchr($filename, '.'), 1);
if (empty($fileext)) {
return (false);
}
$regex = "/^([\w\+\-\.\/]+)\s+(\w+\s)*($fileext)/i";
$lines = file("mime.types", FILE_IGNORE_NEW_LINES);
foreach ($lines as $line) {
if (substr($line, 0, 1) == '#') {
continue; // skip comments
}
if (!preg_match($regex, $line, $matches)) {
continue; // no match to the extension
}
return ($matches[1]);
}
return ("application/data"); // no match at all, revert to something that will work
}
И, чтобы получить список типов пантомимы, вы можете проверить версию моей лаборатории, сохранить отображаемое содержимое и сохранить его в файле с именем mime.types в корневом каталоге вашего сайта.
http://www.trikks.com/lab/mime.html
Веселись