views:

112

answers:

2

I have a website where I let users download mp3 files. The code snippet (partial) is as follows:

Response.Clear();
Response.AppendHeader("Content-Disposition:", "attachment; filename=mike.mp3");
Response.AppendHeader("Content-Length", "1000");
Response.ContentType = "audio/mpeg3";

A customer complained that he is unable to download this file on Safari on Mac 10.4.11. (It simply renders the mp3 file on the page) So, I downloaded Safari for Windows and am unable to recreate the issue. So, I guess there's a difference between Safari for Windows and Safari for Mac?

I don't have a Mac machine. How do I troubleshoot this issue?

+2  A: 

Maybe the colon after header name?

Yes, that certainly shouldn't be there.

Plus, the proper MIME media type for MP3 is audio/mpeg. This type covers the tightly-related MPEG layer-1, layer-2 (.mp2) and layer-3 (.mp3) formats (but not MPEG-4 AAC which is quite different).

Browsers won't recognise the non-standard (not registered with IANA) audio/mpeg3 type, so it's anyone's guess how they'll choose to handle them. It often involves some spooky content-sniffing guesswork, unfortunately, which can lead to quite inappropriate results when browsers see a spurious string they think is evidence of one (wrong) type of file.

bobince
Interesting. I thought a mp3 file maps to the mime type of audio/mpeg3. I'll make this change but am not sure how to test if this works on a Mac Safari version of the browser. Any insight?
Maybe some StackOverflow visitors have Mac :)
Messa
@Messa: One here... :)
Steve Harrison
A: 

Interesting. I don't have asp.net, so I have created this Python web application:

#!/usr/bin/env python
import werkzeug
@werkzeug.Request.application
def app(request):
    f = open("audio.mp3")
    r = werkzeug.Response(f, content_type="audio/mpeg3")
    r.headers.add("Content-Disposition", "attachment; filename=mike.mp3")
    r.headers.add("Content-Length", "1000")
    return r
werkzeug.run_simple("localhost", 4000, app)

Even when the Content-Type (and Content-Length) is wrong, Safari just downloads the file. I have Safari Version 4.0.4 (6531.21.10) on Mac OS X 10.6.2.

Messa