Which mime type should I use for mp3
PhpMp3Mime TypesPhp Problem Overview
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?
Php Solutions
Solution 1 - Php
Your best bet would be using the RFC defined mime-type audio/mpeg
.
Solution 2 - Php
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.
Solution 3 - Php
Use .mp3 audio/mpeg
, that's the one I always used. I guess others are just aliases.
Solution 4 - Php
You should always use audio/mpeg, because firefox cannot play audio/mpeg3 files
Solution 5 - Php
The standard way is to use audio/mpeg
which is something like this in your PHP header function ...
header('Content-Type: audio/mpeg');
Solution 6 - Php
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.