1010 */
1111class MimeType
1212{
13+ private static $ extensionToMimeTypeMap = [
14+ 'hqx ' => 'application/mac-binhex40 ' ,
15+ 'cpt ' => 'application/mac-compactpro ' ,
16+ 'csv ' => 'text/x-comma-separated-values ' ,
17+ 'bin ' => 'application/octet-stream ' ,
18+ 'dms ' => 'application/octet-stream ' ,
19+ 'lha ' => 'application/octet-stream ' ,
20+ 'lzh ' => 'application/octet-stream ' ,
21+ 'exe ' => 'application/octet-stream ' ,
22+ 'class ' => 'application/octet-stream ' ,
23+ 'psd ' => 'application/x-photoshop ' ,
24+ 'so ' => 'application/octet-stream ' ,
25+ 'sea ' => 'application/octet-stream ' ,
26+ 'dll ' => 'application/octet-stream ' ,
27+ 'oda ' => 'application/oda ' ,
28+ 'pdf ' => 'application/pdf ' ,
29+ 'ai ' => 'application/pdf ' ,
30+ 'eps ' => 'application/postscript ' ,
31+ 'ebup ' => 'application/epub+zip ' ,
32+ 'ps ' => 'application/postscript ' ,
33+ 'smi ' => 'application/smil ' ,
34+ 'smil ' => 'application/smil ' ,
35+ 'mif ' => 'application/vnd.mif ' ,
36+ 'xls ' => 'application/vnd.ms-excel ' ,
37+ 'ppt ' => 'application/powerpoint ' ,
38+ 'pptx ' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation ' ,
39+ 'wbxml ' => 'application/wbxml ' ,
40+ 'wmlc ' => 'application/wmlc ' ,
41+ 'dcr ' => 'application/x-director ' ,
42+ 'dir ' => 'application/x-director ' ,
43+ 'dxr ' => 'application/x-director ' ,
44+ 'dvi ' => 'application/x-dvi ' ,
45+ 'gtar ' => 'application/x-gtar ' ,
46+ 'gz ' => 'application/x-gzip ' ,
47+ 'gzip ' => 'application/x-gzip ' ,
48+ 'php ' => 'application/x-httpd-php ' ,
49+ 'php4 ' => 'application/x-httpd-php ' ,
50+ 'php3 ' => 'application/x-httpd-php ' ,
51+ 'phtml ' => 'application/x-httpd-php ' ,
52+ 'phps ' => 'application/x-httpd-php-source ' ,
53+ 'js ' => 'application/javascript ' ,
54+ 'swf ' => 'application/x-shockwave-flash ' ,
55+ 'sit ' => 'application/x-stuffit ' ,
56+ 'tar ' => 'application/x-tar ' ,
57+ 'tgz ' => 'application/x-tar ' ,
58+ 'z ' => 'application/x-compress ' ,
59+ 'xhtml ' => 'application/xhtml+xml ' ,
60+ 'xht ' => 'application/xhtml+xml ' ,
61+ 'zip ' => 'application/x-zip ' ,
62+ 'rar ' => 'application/x-rar ' ,
63+ 'mid ' => 'audio/midi ' ,
64+ 'midi ' => 'audio/midi ' ,
65+ 'mpga ' => 'audio/mpeg ' ,
66+ 'mp2 ' => 'audio/mpeg ' ,
67+ 'mp3 ' => 'audio/mpeg ' ,
68+ 'aif ' => 'audio/x-aiff ' ,
69+ 'aiff ' => 'audio/x-aiff ' ,
70+ 'aifc ' => 'audio/x-aiff ' ,
71+ 'ram ' => 'audio/x-pn-realaudio ' ,
72+ 'rm ' => 'audio/x-pn-realaudio ' ,
73+ 'rpm ' => 'audio/x-pn-realaudio-plugin ' ,
74+ 'ra ' => 'audio/x-realaudio ' ,
75+ 'rv ' => 'video/vnd.rn-realvideo ' ,
76+ 'wav ' => 'audio/x-wav ' ,
77+ 'jpg ' => 'image/jpeg ' ,
78+ 'jpeg ' => 'image/jpeg ' ,
79+ 'jpe ' => 'image/jpeg ' ,
80+ 'png ' => 'image/png ' ,
81+ 'gif ' => 'image/gif ' ,
82+ 'bmp ' => 'image/bmp ' ,
83+ 'tiff ' => 'image/tiff ' ,
84+ 'tif ' => 'image/tiff ' ,
85+ 'svg ' => 'image/svg+xml ' ,
86+ 'css ' => 'text/css ' ,
87+ 'html ' => 'text/html ' ,
88+ 'htm ' => 'text/html ' ,
89+ 'shtml ' => 'text/html ' ,
90+ 'txt ' => 'text/plain ' ,
91+ 'text ' => 'text/plain ' ,
92+ 'log ' => 'text/plain ' ,
93+ 'rtx ' => 'text/richtext ' ,
94+ 'rtf ' => 'text/rtf ' ,
95+ 'xml ' => 'application/xml ' ,
96+ 'xsl ' => 'application/xml ' ,
97+ 'dmn ' => 'application/octet-stream ' ,
98+ 'bpmn ' => 'application/octet-stream ' ,
99+ 'mpeg ' => 'video/mpeg ' ,
100+ 'mpg ' => 'video/mpeg ' ,
101+ 'mpe ' => 'video/mpeg ' ,
102+ 'qt ' => 'video/quicktime ' ,
103+ 'mov ' => 'video/quicktime ' ,
104+ 'avi ' => 'video/x-msvideo ' ,
105+ 'movie ' => 'video/x-sgi-movie ' ,
106+ 'doc ' => 'application/msword ' ,
107+ 'docx ' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document ' ,
108+ 'docm ' => 'application/vnd.ms-word.template.macroEnabled.12 ' ,
109+ 'dot ' => 'application/msword ' ,
110+ 'dotx ' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document ' ,
111+ 'xlsx ' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ' ,
112+ 'word ' => 'application/msword ' ,
113+ 'xl ' => 'application/excel ' ,
114+ 'eml ' => 'message/rfc822 ' ,
115+ 'json ' => 'application/json ' ,
116+ 'pem ' => 'application/x-x509-user-cert ' ,
117+ 'p10 ' => 'application/x-pkcs10 ' ,
118+ 'p12 ' => 'application/x-pkcs12 ' ,
119+ 'p7a ' => 'application/x-pkcs7-signature ' ,
120+ 'p7c ' => 'application/pkcs7-mime ' ,
121+ 'p7m ' => 'application/pkcs7-mime ' ,
122+ 'p7r ' => 'application/x-pkcs7-certreqresp ' ,
123+ 'p7s ' => 'application/pkcs7-signature ' ,
124+ 'crt ' => 'application/x-x509-ca-cert ' ,
125+ 'crl ' => 'application/pkix-crl ' ,
126+ 'der ' => 'application/x-x509-ca-cert ' ,
127+ 'kdb ' => 'application/octet-stream ' ,
128+ 'pgp ' => 'application/pgp ' ,
129+ 'gpg ' => 'application/gpg-keys ' ,
130+ 'sst ' => 'application/octet-stream ' ,
131+ 'csr ' => 'application/octet-stream ' ,
132+ 'rsa ' => 'application/x-pkcs7 ' ,
133+ 'cer ' => 'application/pkix-cert ' ,
134+ '3g2 ' => 'video/3gpp2 ' ,
135+ '3gp ' => 'video/3gp ' ,
136+ 'mp4 ' => 'video/mp4 ' ,
137+ 'm4a ' => 'audio/x-m4a ' ,
138+ 'f4v ' => 'video/mp4 ' ,
139+ 'webm ' => 'video/webm ' ,
140+ 'aac ' => 'audio/x-acc ' ,
141+ 'm4u ' => 'application/vnd.mpegurl ' ,
142+ 'm3u ' => 'text/plain ' ,
143+ 'xspf ' => 'application/xspf+xml ' ,
144+ 'vlc ' => 'application/videolan ' ,
145+ 'wmv ' => 'video/x-ms-wmv ' ,
146+ 'au ' => 'audio/x-au ' ,
147+ 'ac3 ' => 'audio/ac3 ' ,
148+ 'flac ' => 'audio/x-flac ' ,
149+ 'ogg ' => 'audio/ogg ' ,
150+ 'kmz ' => 'application/vnd.google-earth.kmz ' ,
151+ 'kml ' => 'application/vnd.google-earth.kml+xml ' ,
152+ 'ics ' => 'text/calendar ' ,
153+ 'zsh ' => 'text/x-scriptzsh ' ,
154+ '7zip ' => 'application/x-7z-compressed ' ,
155+ 'cdr ' => 'application/cdr ' ,
156+ 'wma ' => 'audio/x-ms-wma ' ,
157+ 'jar ' => 'application/java-archive ' ,
158+ 'tex ' => 'application/x-tex ' ,
159+ 'latex ' => 'application/x-latex ' ,
160+ 'odt ' => 'application/vnd.oasis.opendocument.text ' ,
161+ 'ods ' => 'application/vnd.oasis.opendocument.spreadsheet ' ,
162+ 'odp ' => 'application/vnd.oasis.opendocument.presentation ' ,
163+ 'odg ' => 'application/vnd.oasis.opendocument.graphics ' ,
164+ 'odc ' => 'application/vnd.oasis.opendocument.chart ' ,
165+ 'odf ' => 'application/vnd.oasis.opendocument.formula ' ,
166+ 'odi ' => 'application/vnd.oasis.opendocument.image ' ,
167+ 'odm ' => 'application/vnd.oasis.opendocument.text-master ' ,
168+ 'odb ' => 'application/vnd.oasis.opendocument.database ' ,
169+ 'ott ' => 'application/vnd.oasis.opendocument.text-template ' ,
170+ ];
171+
13172 /**
14173 * Detects MIME Type based on given content.
15174 *
@@ -41,17 +200,9 @@ public static function detectByContent($content)
41200 */
42201 public static function detectByFileExtension ($ extension )
43202 {
44- static $ extensionToMimeTypeMap ;
45-
46- if (! $ extensionToMimeTypeMap ) {
47- $ extensionToMimeTypeMap = static ::getExtensionToMimeTypeMap ();
48- }
49-
50- if (isset ($ extensionToMimeTypeMap [$ extension ])) {
51- return $ extensionToMimeTypeMap [$ extension ];
52- }
53-
54- return 'text/plain ' ;
203+ return isset (static ::$ extensionToMimeTypeMap [$ extension ])
204+ ? static ::$ extensionToMimeTypeMap [$ extension ]
205+ : 'text/plain ' ;
55206 }
56207
57208 /**
@@ -71,162 +222,6 @@ public static function detectByFilename($filename)
71222 */
72223 public static function getExtensionToMimeTypeMap ()
73224 {
74- return [
75- 'hqx ' => 'application/mac-binhex40 ' ,
76- 'cpt ' => 'application/mac-compactpro ' ,
77- 'csv ' => 'text/x-comma-separated-values ' ,
78- 'bin ' => 'application/octet-stream ' ,
79- 'dms ' => 'application/octet-stream ' ,
80- 'lha ' => 'application/octet-stream ' ,
81- 'lzh ' => 'application/octet-stream ' ,
82- 'exe ' => 'application/octet-stream ' ,
83- 'class ' => 'application/octet-stream ' ,
84- 'psd ' => 'application/x-photoshop ' ,
85- 'so ' => 'application/octet-stream ' ,
86- 'sea ' => 'application/octet-stream ' ,
87- 'dll ' => 'application/octet-stream ' ,
88- 'oda ' => 'application/oda ' ,
89- 'pdf ' => 'application/pdf ' ,
90- 'ai ' => 'application/pdf ' ,
91- 'eps ' => 'application/postscript ' ,
92- 'ps ' => 'application/postscript ' ,
93- 'smi ' => 'application/smil ' ,
94- 'smil ' => 'application/smil ' ,
95- 'mif ' => 'application/vnd.mif ' ,
96- 'xls ' => 'application/vnd.ms-excel ' ,
97- 'ppt ' => 'application/powerpoint ' ,
98- 'pptx ' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation ' ,
99- 'wbxml ' => 'application/wbxml ' ,
100- 'wmlc ' => 'application/wmlc ' ,
101- 'dcr ' => 'application/x-director ' ,
102- 'dir ' => 'application/x-director ' ,
103- 'dxr ' => 'application/x-director ' ,
104- 'dvi ' => 'application/x-dvi ' ,
105- 'gtar ' => 'application/x-gtar ' ,
106- 'gz ' => 'application/x-gzip ' ,
107- 'gzip ' => 'application/x-gzip ' ,
108- 'php ' => 'application/x-httpd-php ' ,
109- 'php4 ' => 'application/x-httpd-php ' ,
110- 'php3 ' => 'application/x-httpd-php ' ,
111- 'phtml ' => 'application/x-httpd-php ' ,
112- 'phps ' => 'application/x-httpd-php-source ' ,
113- 'js ' => 'application/javascript ' ,
114- 'swf ' => 'application/x-shockwave-flash ' ,
115- 'sit ' => 'application/x-stuffit ' ,
116- 'tar ' => 'application/x-tar ' ,
117- 'tgz ' => 'application/x-tar ' ,
118- 'z ' => 'application/x-compress ' ,
119- 'xhtml ' => 'application/xhtml+xml ' ,
120- 'xht ' => 'application/xhtml+xml ' ,
121- 'zip ' => 'application/x-zip ' ,
122- 'rar ' => 'application/x-rar ' ,
123- 'mid ' => 'audio/midi ' ,
124- 'midi ' => 'audio/midi ' ,
125- 'mpga ' => 'audio/mpeg ' ,
126- 'mp2 ' => 'audio/mpeg ' ,
127- 'mp3 ' => 'audio/mpeg ' ,
128- 'aif ' => 'audio/x-aiff ' ,
129- 'aiff ' => 'audio/x-aiff ' ,
130- 'aifc ' => 'audio/x-aiff ' ,
131- 'ram ' => 'audio/x-pn-realaudio ' ,
132- 'rm ' => 'audio/x-pn-realaudio ' ,
133- 'rpm ' => 'audio/x-pn-realaudio-plugin ' ,
134- 'ra ' => 'audio/x-realaudio ' ,
135- 'rv ' => 'video/vnd.rn-realvideo ' ,
136- 'wav ' => 'audio/x-wav ' ,
137- 'jpg ' => 'image/jpeg ' ,
138- 'jpeg ' => 'image/jpeg ' ,
139- 'jpe ' => 'image/jpeg ' ,
140- 'png ' => 'image/png ' ,
141- 'gif ' => 'image/gif ' ,
142- 'bmp ' => 'image/bmp ' ,
143- 'tiff ' => 'image/tiff ' ,
144- 'tif ' => 'image/tiff ' ,
145- 'svg ' => 'image/svg+xml ' ,
146- 'css ' => 'text/css ' ,
147- 'html ' => 'text/html ' ,
148- 'htm ' => 'text/html ' ,
149- 'shtml ' => 'text/html ' ,
150- 'txt ' => 'text/plain ' ,
151- 'text ' => 'text/plain ' ,
152- 'log ' => 'text/plain ' ,
153- 'rtx ' => 'text/richtext ' ,
154- 'rtf ' => 'text/rtf ' ,
155- 'xml ' => 'application/xml ' ,
156- 'xsl ' => 'application/xml ' ,
157- 'dmn ' => 'application/octet-stream ' ,
158- 'bpmn ' => 'application/octet-stream ' ,
159- 'mpeg ' => 'video/mpeg ' ,
160- 'mpg ' => 'video/mpeg ' ,
161- 'mpe ' => 'video/mpeg ' ,
162- 'qt ' => 'video/quicktime ' ,
163- 'mov ' => 'video/quicktime ' ,
164- 'avi ' => 'video/x-msvideo ' ,
165- 'movie ' => 'video/x-sgi-movie ' ,
166- 'doc ' => 'application/msword ' ,
167- 'docx ' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document ' ,
168- 'docm ' => 'application/vnd.ms-word.template.macroEnabled.12 ' ,
169- 'dot ' => 'application/msword ' ,
170- 'dotx ' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document ' ,
171- 'xlsx ' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ' ,
172- 'word ' => 'application/msword ' ,
173- 'xl ' => 'application/excel ' ,
174- 'eml ' => 'message/rfc822 ' ,
175- 'json ' => 'application/json ' ,
176- 'pem ' => 'application/x-x509-user-cert ' ,
177- 'p10 ' => 'application/x-pkcs10 ' ,
178- 'p12 ' => 'application/x-pkcs12 ' ,
179- 'p7a ' => 'application/x-pkcs7-signature ' ,
180- 'p7c ' => 'application/pkcs7-mime ' ,
181- 'p7m ' => 'application/pkcs7-mime ' ,
182- 'p7r ' => 'application/x-pkcs7-certreqresp ' ,
183- 'p7s ' => 'application/pkcs7-signature ' ,
184- 'crt ' => 'application/x-x509-ca-cert ' ,
185- 'crl ' => 'application/pkix-crl ' ,
186- 'der ' => 'application/x-x509-ca-cert ' ,
187- 'kdb ' => 'application/octet-stream ' ,
188- 'pgp ' => 'application/pgp ' ,
189- 'gpg ' => 'application/gpg-keys ' ,
190- 'sst ' => 'application/octet-stream ' ,
191- 'csr ' => 'application/octet-stream ' ,
192- 'rsa ' => 'application/x-pkcs7 ' ,
193- 'cer ' => 'application/pkix-cert ' ,
194- '3g2 ' => 'video/3gpp2 ' ,
195- '3gp ' => 'video/3gp ' ,
196- 'mp4 ' => 'video/mp4 ' ,
197- 'm4a ' => 'audio/x-m4a ' ,
198- 'f4v ' => 'video/mp4 ' ,
199- 'webm ' => 'video/webm ' ,
200- 'aac ' => 'audio/x-acc ' ,
201- 'm4u ' => 'application/vnd.mpegurl ' ,
202- 'm3u ' => 'text/plain ' ,
203- 'xspf ' => 'application/xspf+xml ' ,
204- 'vlc ' => 'application/videolan ' ,
205- 'wmv ' => 'video/x-ms-wmv ' ,
206- 'au ' => 'audio/x-au ' ,
207- 'ac3 ' => 'audio/ac3 ' ,
208- 'flac ' => 'audio/x-flac ' ,
209- 'ogg ' => 'audio/ogg ' ,
210- 'kmz ' => 'application/vnd.google-earth.kmz ' ,
211- 'kml ' => 'application/vnd.google-earth.kml+xml ' ,
212- 'ics ' => 'text/calendar ' ,
213- 'zsh ' => 'text/x-scriptzsh ' ,
214- '7zip ' => 'application/x-7z-compressed ' ,
215- 'cdr ' => 'application/cdr ' ,
216- 'wma ' => 'audio/x-ms-wma ' ,
217- 'jar ' => 'application/java-archive ' ,
218- 'tex ' => 'application/x-tex ' ,
219- 'latex ' => 'application/x-latex ' ,
220- 'odt ' => 'application/vnd.oasis.opendocument.text ' ,
221- 'ods ' => 'application/vnd.oasis.opendocument.spreadsheet ' ,
222- 'odp ' => 'application/vnd.oasis.opendocument.presentation ' ,
223- 'odg ' => 'application/vnd.oasis.opendocument.graphics ' ,
224- 'odc ' => 'application/vnd.oasis.opendocument.chart ' ,
225- 'odf ' => 'application/vnd.oasis.opendocument.formula ' ,
226- 'odi ' => 'application/vnd.oasis.opendocument.image ' ,
227- 'odm ' => 'application/vnd.oasis.opendocument.text-master ' ,
228- 'odb ' => 'application/vnd.oasis.opendocument.database ' ,
229- 'ott ' => 'application/vnd.oasis.opendocument.text-template ' ,
230- ];
225+ return static ::$ extensionToMimeTypeMap ;
231226 }
232227}
0 commit comments