Остановить воспроизведение mp3-файлов в браузерах - PullRequest
7 голосов
/ 04 августа 2010

У меня есть mp3 на сервере Apache.Я хочу, чтобы он загружался как файл, когда пользователь заходит по ссылке.Вместо QuickTime, или Google Chrome Media Player будет пытаться потоковое воспроизведение.

Есть ли исправить это с заголовками?Или это единственный вариант, поэтому «щелкните правой кнопкой мыши как сохранить»?

Редактировать Вот мой заголовок.Safari прекратил потоковую передачу, но Chrome продолжает это делать.Похоже, что Chrome игнорирует это:

Я вижу, что заголовок был изменен правильно:

Date    Wed, 04 Aug 2010 00:14:35 GMT
Server  Apache/2.2.13 (Unix) mod_ssl/2.2.13 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.11
Last-Modified   Tue, 03 Aug 2010 04:37:01 GMT
Etag    "2bbd692-79597d-48ce3de3f5540"
Accept-Ranges   bytes
Content-Length  7952765
Content-Disposition attachment
Keep-Alive  timeout=5, max=100
Connection  Keep-Alive
Content-Type    audio/mpeg

Есть ли в заголовке что-нибудь еще, что могло бы вызвать это?

Редактировать Проводя некоторые исследования, я обнаружил следующее: http://www.google.com/support/forum/p/Chrome/thread?tid=76de4f53f43f03d3&hl=en Похоже, что в Chrome может быть ошибка, препятствующая загрузке.

1 Ответ

12 голосов
/ 04 августа 2010

Вы хотите установить для заголовка ответа Content-Disposition значение «вложение» и, возможно, также поле «имя файла».

Пример:

Content-Disposition: attachment; filename=foo.mp3;

Чтобы выполнить это непосредственно в Apache, попробуйте добавить в файл httpd.conf или .htaccess следующее:

<FilesMatch "\.(?i:mp3)$">
  ForceType audio/mpeg
  SetEnvIf Request_URI "^.*/?([^/]*)$" FILENAME=$1
  Header set Content-Disposition "attachment; filename=%{FILENAME}e"
  UnsetEnv FILENAME
</FilesMatch>

EDIT:

Добавлено поле имени файла в примере конфигурации Apache, заимствовано из этого ответа . Однако вам следует знать о потенциальных проблемах, вызванных именами файлов с символами не-US-ASCII: см. этот вопрос .

В качестве альтернативы, вы можете использовать общее постоянное имя файла (так как вы уже знаете расширение), например song.mp3, но это может не подходить в зависимости от ваших обстоятельств.

Третий вариант - создать сценарий для обслуживания этих файлов MP3, который может установить заголовок и позаботиться об удалении ненужных символов из имени файла.

...