@@ -61,6 +61,103 @@ @implementation FileUtils
61
61
rejecter:(RCTPromiseRejectBlock)reject
62
62
)
63
63
{
64
+ NSMutableDictionary *ListOfMimeTypes = [[NSMutableDictionary alloc ] init ];
65
+ [ListOfMimeTypes setObject: @" image/jpeg" forKey: @" jpg" ];
66
+ [ListOfMimeTypes setObject: @" html" forKey: @" text/html" ];
67
+ [ListOfMimeTypes setObject: @" htm" forKey: @" text/html" ];
68
+ [ListOfMimeTypes setObject: @" shtml" forKey: @" text/html" ];
69
+ [ListOfMimeTypes setObject: @" css" forKey: @" text/css" ];
70
+ [ListOfMimeTypes setObject: @" xml" forKey: @" text/xml" ];
71
+ [ListOfMimeTypes setObject: @" gif" forKey: @" image/gif" ];
72
+ [ListOfMimeTypes setObject: @" jpeg" forKey: @" image/jpeg" ];
73
+ [ListOfMimeTypes setObject: @" jpg" forKey: @" image/jpeg" ];
74
+ [ListOfMimeTypes setObject: @" js" forKey: @" application/javascript" ];
75
+ [ListOfMimeTypes setObject: @" atom" forKey: @" application/atom+xml" ];
76
+ [ListOfMimeTypes setObject: @" rss" forKey: @" application/rss+xml" ];
77
+ [ListOfMimeTypes setObject: @" mml" forKey: @" text/mathml" ];
78
+ [ListOfMimeTypes setObject: @" txt" forKey: @" text/plain" ];
79
+ [ListOfMimeTypes setObject: @" jad" forKey: @" text/vnd.sun.j2me.app-descriptor" ];
80
+ [ListOfMimeTypes setObject: @" wml" forKey: @" text/vnd.wap.wml" ];
81
+ [ListOfMimeTypes setObject: @" htc" forKey: @" text/x-component" ];
82
+ [ListOfMimeTypes setObject: @" png" forKey: @" image/png" ];
83
+ [ListOfMimeTypes setObject: @" tif" forKey: @" image/tiff" ];
84
+ [ListOfMimeTypes setObject: @" tiff" forKey: @" image/tiff" ];
85
+ [ListOfMimeTypes setObject: @" wbmp" forKey: @" image/vnd.wap.wbmp" ];
86
+ [ListOfMimeTypes setObject: @" ico" forKey: @" image/x-icon" ];
87
+ [ListOfMimeTypes setObject: @" jng" forKey: @" image/x-jng" ];
88
+ [ListOfMimeTypes setObject: @" bmp" forKey: @" image/x-ms-bmp" ];
89
+ [ListOfMimeTypes setObject: @" svg" forKey: @" image/svg+xml" ];
90
+ [ListOfMimeTypes setObject: @" svgz" forKey: @" image/svg+xml" ];
91
+ [ListOfMimeTypes setObject: @" webp" forKey: @" image/webp" ];
92
+ [ListOfMimeTypes setObject: @" woff" forKey: @" application/font-woff" ];
93
+ [ListOfMimeTypes setObject: @" jar" forKey: @" application/java-archive" ];
94
+ [ListOfMimeTypes setObject: @" war" forKey: @" application/java-archive" ];
95
+ [ListOfMimeTypes setObject: @" ear" forKey: @" application/java-archive" ];
96
+ [ListOfMimeTypes setObject: @" json" forKey: @" application/json" ];
97
+ [ListOfMimeTypes setObject: @" hqx" forKey: @" application/mac-binhex40" ];
98
+ [ListOfMimeTypes setObject: @" doc" forKey: @" application/msword" ];
99
+ [ListOfMimeTypes setObject: @" pdf" forKey: @" application/pdf" ];
100
+ [ListOfMimeTypes setObject: @" ps" forKey: @" application/postscript" ];
101
+ [ListOfMimeTypes setObject: @" eps" forKey: @" application/postscript" ];
102
+ [ListOfMimeTypes setObject: @" ai" forKey: @" application/postscript" ];
103
+ [ListOfMimeTypes setObject: @" rtf" forKey: @" application/rtf" ];
104
+ [ListOfMimeTypes setObject: @" m3u8" forKey: @" application/vnd.apple.mpegurl" ];
105
+ [ListOfMimeTypes setObject: @" xls" forKey: @" application/vnd.ms-excel" ];
106
+ [ListOfMimeTypes setObject: @" eot" forKey: @" application/vnd.ms-fontobject" ];
107
+ [ListOfMimeTypes setObject: @" ppt" forKey: @" application/vnd.ms-powerpoint" ];
108
+ [ListOfMimeTypes setObject: @" wmlc" forKey: @" application/vnd.wap.wmlc" ];
109
+ [ListOfMimeTypes setObject: @" kml" forKey: @" application/vnd.google-earth.kml+xml" ];
110
+ [ListOfMimeTypes setObject: @" kmz" forKey: @" application/vnd.google-earth.kmz" ];
111
+ [ListOfMimeTypes setObject: @" 7z" forKey: @" application/x-7z-compressed" ];
112
+ [ListOfMimeTypes setObject: @" cco" forKey: @" application/x-cocoa" ];
113
+ [ListOfMimeTypes setObject: @" jardiff" forKey: @" application/x-java-archive-diff" ];
114
+ [ListOfMimeTypes setObject: @" jnlp" forKey: @" application/x-java-jnlp-file" ];
115
+ [ListOfMimeTypes setObject: @" run" forKey: @" application/x-makeself" ];
116
+ [ListOfMimeTypes setObject: @" pl" forKey: @" application/x-perl" ];
117
+ [ListOfMimeTypes setObject: @" pm" forKey: @" application/x-perl" ];
118
+ [ListOfMimeTypes setObject: @" prc" forKey: @" application/x-pilot" ];
119
+ [ListOfMimeTypes setObject: @" pdb" forKey: @" application/x-pilot" ];
120
+ [ListOfMimeTypes setObject: @" rar" forKey: @" application/x-rar-compressed" ];
121
+ [ListOfMimeTypes setObject: @" rpm" forKey: @" application/x-redhat-package-manager" ];
122
+ [ListOfMimeTypes setObject: @" sea" forKey: @" application/x-sea" ];
123
+ [ListOfMimeTypes setObject: @" swf" forKey: @" application/x-shockwave-flash" ];
124
+ [ListOfMimeTypes setObject: @" sit" forKey: @" application/x-stuffit" ];
125
+ [ListOfMimeTypes setObject: @" tcl" forKey: @" application/x-tcl" ];
126
+ [ListOfMimeTypes setObject: @" tk" forKey: @" application/x-tcl" ];
127
+ [ListOfMimeTypes setObject: @" der" forKey: @" application/x-x509-ca-cert" ];
128
+ [ListOfMimeTypes setObject: @" pem" forKey: @" application/x-x509-ca-cert" ];
129
+ [ListOfMimeTypes setObject: @" crt" forKey: @" application/x-x509-ca-cert" ];
130
+ [ListOfMimeTypes setObject: @" xpi" forKey: @" application/x-xpinstall" ];
131
+ [ListOfMimeTypes setObject: @" xhtml" forKey: @" application/xhtml+xml" ];
132
+ [ListOfMimeTypes setObject: @" xspf" forKey: @" application/xspf+xml" ];
133
+ [ListOfMimeTypes setObject: @" zip" forKey: @" application/zip" ];
134
+ [ListOfMimeTypes setObject: @" epub" forKey: @" application/epub+zip" ];
135
+ [ListOfMimeTypes setObject: @" docx" forKey: @" application/vnd.openxmlformats-officedocument.wordprocessingml.document" ];
136
+ [ListOfMimeTypes setObject: @" xlsx" forKey: @" application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ];
137
+ [ListOfMimeTypes setObject: @" pptx" forKey: @" application/vnd.openxmlformats-officedocument.presentationml.presentation" ];
138
+ [ListOfMimeTypes setObject: @" mid" forKey: @" audio/midi" ];
139
+ [ListOfMimeTypes setObject: @" midi" forKey: @" audio/midi" ];
140
+ [ListOfMimeTypes setObject: @" kar" forKey: @" audio/midi" ];
141
+ [ListOfMimeTypes setObject: @" mp3" forKey: @" audio/mpeg" ];
142
+ [ListOfMimeTypes setObject: @" ogg" forKey: @" audio/ogg" ];
143
+ [ListOfMimeTypes setObject: @" m4a" forKey: @" audio/x-m4a" ];
144
+ [ListOfMimeTypes setObject: @" ra" forKey: @" audio/x-realaudio" ];
145
+ [ListOfMimeTypes setObject: @" 3gpp" forKey: @" video/3gpp" ];
146
+ [ListOfMimeTypes setObject: @" 3gp" forKey: @" video/3gpp" ];
147
+ [ListOfMimeTypes setObject: @" ts" forKey: @" video/mp2t" ];
148
+ [ListOfMimeTypes setObject: @" mp4" forKey: @" video/mp4" ];
149
+ [ListOfMimeTypes setObject: @" mpeg" forKey: @" video/mpeg" ];
150
+ [ListOfMimeTypes setObject: @" mpg" forKey: @" video/mpeg" ];
151
+ [ListOfMimeTypes setObject: @" mov" forKey: @" video/quicktime" ];
152
+ [ListOfMimeTypes setObject: @" webm" forKey: @" video/webm" ];
153
+ [ListOfMimeTypes setObject: @" flv" forKey: @" video/x-flv" ];
154
+ [ListOfMimeTypes setObject: @" m4v" forKey: @" video/x-m4v" ];
155
+ [ListOfMimeTypes setObject: @" mng" forKey: @" video/x-mng" ];
156
+ [ListOfMimeTypes setObject: @" asx" forKey: @" video/x-ms-asf" ];
157
+ [ListOfMimeTypes setObject: @" asf" forKey: @" video/x-ms-asf" ];
158
+ [ListOfMimeTypes setObject: @" wmv" forKey: @" video/x-ms-wmv" ];
159
+ [ListOfMimeTypes setObject: @" avi" forKey: @" video/x-msvideo" ];
160
+
64
161
NSURL *referenceUrl = [NSURL URLWithString: path];
65
162
CFStringRef fileExtension = (__bridge CFStringRef)[referenceUrl pathExtension ];
66
163
CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag (kUTTagClassFilenameExtension , fileExtension, NULL );
@@ -69,6 +166,10 @@ @implementation FileUtils
69
166
if (UTI != nil ) {
70
167
CFRelease (UTI);
71
168
resolve ((NSString *)CFBridgingRelease (MIMEType));
169
+ } else if (fileExtension != nil ) { // Use a fallback lookup array to determine MIME type
170
+ NSString *lookupKey = (__bridge NSString *)fileExtension;
171
+ NSString *lookupResult = [ListOfMimeTypes objectForKey: [lookupKey lowercaseString ]];
172
+ resolve (lookupResult);
72
173
} else {
73
174
reject (
74
175
@" GET_MIME_TYPE_MALFORMED_PATH_ERROR" ,
0 commit comments