Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stop mp3 file from streaming in browsers

I have an mp3 on an apache server. I want it to be downloaded as a file when a user visits the link. Instead quicktime, or google chromes media player will try and stream it.

Is there a fix for this with headers? Or is the only option so 'right click save as'?

Edit Here is my header. Safari has stopped streaming, but chrome contines to do it. Chrome seems to be ignoring this:

I can see the header has been changed correctly:

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

Is there anything else in the header that would cause this?

Edit Doing some research I found this: http://www.google.com/support/forum/p/Chrome/thread?tid=76de4f53f43f03d3&hl=en Looks like there might be a bug in chrome preventing it from downloading.

like image 569
Keyo Avatar asked Aug 04 '10 00:08

Keyo


1 Answers

You want to set the Content-Disposition response header to "attachment", and probably the "filename" field as well.

Example:

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

To accomplish this directly in Apache, try putting the following in your httpd.conf or .htaccess file:

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

EDIT:

Added filename field to Apache configuration example, borrowed from this answer. You should be aware, however, of potential problems caused by filenames with non-US-ASCII characters in them: see this question.

Alternatively, you could use a generic constant filename (since you know the extension already) like song.mp3, but this might not be an option depending on your circumstances.

A third option would be to create a script to serve these MP3s, which can set the header and take care of stripping unwanted characters out of the filename.

like image 117
Cameron Avatar answered Sep 25 '22 23:09

Cameron