Я пытаюсь принудительно загрузить браузером вот мой код:
header("Content-Type: application/force-download");
header('Content-type: audio/mp3');
header('Content-Description: File Download');
header('Content-Disposition: attachment; filename=' . $file_name);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-length: ' . filesize($file_path);
ob_clean();
flush();
readfile($file_path);
Это прекрасно работает на моем локальном компьютере, но когда я загружаю его на свой работающий сервер, двоичный файл выгружается в браузер, и эти бессмысленные символы заполняют окно браузера. В чем может быть проблема? Я на общем сервере, поэтому не знаю, нужно ли изменить конфигурацию apache или что-то в этом роде.
Я взял совет @sanmi и использовал Firebug, чтобы увидеть заголовок ответа, и вот что я получил:
Here is what I got sanmai:
Server nginx/0.7.67
Date Tue, 06 Sep 2011 15:02:03 GMT
Content-Type text/html; charset=UTF-8
Transfer-Encoding chunked
Connection keep-alive
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Vary Accept-Encoding,User-Agent
Content-Encoding gzip
Я вижу, что запись типа контента изменилась на text / html, и что сервер на самом деле является nginx. Так это проблема nginx или мои записи в заголовке неверны?
Спасибо,
Tsega