I'm trying to decide which mime type to choose for returning mp3 data (served up by php)
according to this listing of mime types: http://www.webmaster-toolkit.com/mime-types.shtml
.mp3 audio/mpeg3
.mp3 audio/x-mpeg-3
.mp3 video/mpeg
.mp3 video/x-mpeg
What are the difference between these, and which should I use?
I had a problem with mime types and where making tests for few file types. It looks like each browser sends it's variation of a mime type for a specific file. I was trying to upload mp3 and zip files with open source php class, that what I have found:
Firefox (mp3): audio/mpeg
Firefox (zip): application/zip
Chrome (mp3): audio/mp3
Chrome (zip): application/octet-stream
Opera (mp3): audio/mp3
Opera (zip): application/octet-stream
IE (mp3): audio/mpeg
IE (zip): application/x-zip-compressed
So if you need several file types to upload, you better make some tests so that every browser could upload a file and pass mime type check.
Use .mp3 audio/mpeg
, that's the one I always used. I guess others are just aliases.
You should always use audio/mpeg, because firefox cannot play audio/mpeg3 files
mp3 files sometimes throw strange mime types as per this answer: https://stackoverflow.com/a/2755288/14482130
If you are doing some user validation do not allow 'application/octet-stream' or 'application/x-zip-compressed' as suggested above since they can contain be .exe or other potentially dangerous files.
In order to validate when mime type gives a false negative you can use fleep as per this answer https://stackoverflow.com/a/52570299/14482130 to finish the validation.
Success story sharing
audio/mp3
... Go figure.audio/mpeg
if you are returning an mp3 file oraudio/wav
if you are returning a wav file. You could use the genericapplication/octet-stream
to indicate a binary file if you didn't want to code for returning the actual mime type, but then the browser might not treat the file the way you expect.