| 1 |
<?php |
| 2 |
|
| 3 |
namespace FluentForm\Framework\Request; |
| 4 |
|
| 5 |
use FluentValidator\Contracts\File as Contract; |
| 6 |
|
| 7 |
class File extends \SplFileInfo implements Contract |
| 8 |
{ |
| 9 |
/** |
| 10 |
* A map of mime types and their default extensions. |
| 11 |
* |
| 12 |
* This list has been placed under the public domain by the Apache HTTPD project. |
| 13 |
* This list has been updated from upstream on 2013-04-23. |
| 14 |
* |
| 15 |
* @see http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types |
| 16 |
*/ |
| 17 |
protected $defaultExtensions = [ |
| 18 |
'application/andrew-inset' => 'ez', |
| 19 |
'application/applixware' => 'aw', |
| 20 |
'application/atom+xml' => 'atom', |
| 21 |
'application/atomcat+xml' => 'atomcat', |
| 22 |
'application/atomsvc+xml' => 'atomsvc', |
| 23 |
'application/ccxml+xml' => 'ccxml', |
| 24 |
'application/cdmi-capability' => 'cdmia', |
| 25 |
'application/cdmi-container' => 'cdmic', |
| 26 |
'application/cdmi-domain' => 'cdmid', |
| 27 |
'application/cdmi-object' => 'cdmio', |
| 28 |
'application/cdmi-queue' => 'cdmiq', |
| 29 |
'application/cu-seeme' => 'cu', |
| 30 |
'application/davmount+xml' => 'davmount', |
| 31 |
'application/docbook+xml' => 'dbk', |
| 32 |
'application/dssc+der' => 'dssc', |
| 33 |
'application/dssc+xml' => 'xdssc', |
| 34 |
'application/ecmascript' => 'ecma', |
| 35 |
'application/emma+xml' => 'emma', |
| 36 |
'application/epub+zip' => 'epub', |
| 37 |
'application/exi' => 'exi', |
| 38 |
'application/font-tdpfr' => 'pfr', |
| 39 |
'application/gml+xml' => 'gml', |
| 40 |
'application/gpx+xml' => 'gpx', |
| 41 |
'application/gxf' => 'gxf', |
| 42 |
'application/hyperstudio' => 'stk', |
| 43 |
'application/inkml+xml' => 'ink', |
| 44 |
'application/ipfix' => 'ipfix', |
| 45 |
'application/java-archive' => 'jar', |
| 46 |
'application/java-serialized-object' => 'ser', |
| 47 |
'application/java-vm' => 'class', |
| 48 |
'application/javascript' => 'js', |
| 49 |
'application/json' => 'json', |
| 50 |
'application/jsonml+json' => 'jsonml', |
| 51 |
'application/lost+xml' => 'lostxml', |
| 52 |
'application/mac-binhex40' => 'hqx', |
| 53 |
'application/mac-compactpro' => 'cpt', |
| 54 |
'application/mads+xml' => 'mads', |
| 55 |
'application/marc' => 'mrc', |
| 56 |
'application/marcxml+xml' => 'mrcx', |
| 57 |
'application/mathematica' => 'ma', |
| 58 |
'application/mathml+xml' => 'mathml', |
| 59 |
'application/mbox' => 'mbox', |
| 60 |
'application/mediaservercontrol+xml' => 'mscml', |
| 61 |
'application/metalink+xml' => 'metalink', |
| 62 |
'application/metalink4+xml' => 'meta4', |
| 63 |
'application/mets+xml' => 'mets', |
| 64 |
'application/mods+xml' => 'mods', |
| 65 |
'application/mp21' => 'm21', |
| 66 |
'application/mp4' => 'mp4s', |
| 67 |
'application/msword' => 'doc', |
| 68 |
'application/mxf' => 'mxf', |
| 69 |
'application/octet-stream' => 'bin', |
| 70 |
'application/oda' => 'oda', |
| 71 |
'application/oebps-package+xml' => 'opf', |
| 72 |
'application/ogg' => 'ogx', |
| 73 |
'application/omdoc+xml' => 'omdoc', |
| 74 |
'application/onenote' => 'onetoc', |
| 75 |
'application/oxps' => 'oxps', |
| 76 |
'application/patch-ops-error+xml' => 'xer', |
| 77 |
'application/pdf' => 'pdf', |
| 78 |
'application/pgp-encrypted' => 'pgp', |
| 79 |
'application/pgp-signature' => 'asc', |
| 80 |
'application/pics-rules' => 'prf', |
| 81 |
'application/pkcs10' => 'p10', |
| 82 |
'application/pkcs7-mime' => 'p7m', |
| 83 |
'application/pkcs7-signature' => 'p7s', |
| 84 |
'application/pkcs8' => 'p8', |
| 85 |
'application/pkix-attr-cert' => 'ac', |
| 86 |
'application/pkix-cert' => 'cer', |
| 87 |
'application/pkix-crl' => 'crl', |
| 88 |
'application/pkix-pkipath' => 'pkipath', |
| 89 |
'application/pkixcmp' => 'pki', |
| 90 |
'application/pls+xml' => 'pls', |
| 91 |
'application/postscript' => 'ai', |
| 92 |
'application/prs.cww' => 'cww', |
| 93 |
'application/pskc+xml' => 'pskcxml', |
| 94 |
'application/rdf+xml' => 'rdf', |
| 95 |
'application/reginfo+xml' => 'rif', |
| 96 |
'application/relax-ng-compact-syntax' => 'rnc', |
| 97 |
'application/resource-lists+xml' => 'rl', |
| 98 |
'application/resource-lists-diff+xml' => 'rld', |
| 99 |
'application/rls-services+xml' => 'rs', |
| 100 |
'application/rpki-ghostbusters' => 'gbr', |
| 101 |
'application/rpki-manifest' => 'mft', |
| 102 |
'application/rpki-roa' => 'roa', |
| 103 |
'application/rsd+xml' => 'rsd', |
| 104 |
'application/rss+xml' => 'rss', |
| 105 |
'application/rtf' => 'rtf', |
| 106 |
'application/sbml+xml' => 'sbml', |
| 107 |
'application/scvp-cv-request' => 'scq', |
| 108 |
'application/scvp-cv-response' => 'scs', |
| 109 |
'application/scvp-vp-request' => 'spq', |
| 110 |
'application/scvp-vp-response' => 'spp', |
| 111 |
'application/sdp' => 'sdp', |
| 112 |
'application/set-payment-initiation' => 'setpay', |
| 113 |
'application/set-registration-initiation' => 'setreg', |
| 114 |
'application/shf+xml' => 'shf', |
| 115 |
'application/smil+xml' => 'smi', |
| 116 |
'application/sparql-query' => 'rq', |
| 117 |
'application/sparql-results+xml' => 'srx', |
| 118 |
'application/srgs' => 'gram', |
| 119 |
'application/srgs+xml' => 'grxml', |
| 120 |
'application/sru+xml' => 'sru', |
| 121 |
'application/ssdl+xml' => 'ssdl', |
| 122 |
'application/ssml+xml' => 'ssml', |
| 123 |
'application/tei+xml' => 'tei', |
| 124 |
'application/thraud+xml' => 'tfi', |
| 125 |
'application/timestamped-data' => 'tsd', |
| 126 |
'application/vnd.3gpp.pic-bw-large' => 'plb', |
| 127 |
'application/vnd.3gpp.pic-bw-small' => 'psb', |
| 128 |
'application/vnd.3gpp.pic-bw-var' => 'pvb', |
| 129 |
'application/vnd.3gpp2.tcap' => 'tcap', |
| 130 |
'application/vnd.3m.post-it-notes' => 'pwn', |
| 131 |
'application/vnd.accpac.simply.aso' => 'aso', |
| 132 |
'application/vnd.accpac.simply.imp' => 'imp', |
| 133 |
'application/vnd.acucobol' => 'acu', |
| 134 |
'application/vnd.acucorp' => 'atc', |
| 135 |
'application/vnd.adobe.air-application-installer-package+zip' => 'air', |
| 136 |
'application/vnd.adobe.formscentral.fcdt' => 'fcdt', |
| 137 |
'application/vnd.adobe.fxp' => 'fxp', |
| 138 |
'application/vnd.adobe.xdp+xml' => 'xdp', |
| 139 |
'application/vnd.adobe.xfdf' => 'xfdf', |
| 140 |
'application/vnd.ahead.space' => 'ahead', |
| 141 |
'application/vnd.airzip.filesecure.azf' => 'azf', |
| 142 |
'application/vnd.airzip.filesecure.azs' => 'azs', |
| 143 |
'application/vnd.amazon.ebook' => 'azw', |
| 144 |
'application/vnd.americandynamics.acc' => 'acc', |
| 145 |
'application/vnd.amiga.ami' => 'ami', |
| 146 |
'application/vnd.android.package-archive' => 'apk', |
| 147 |
'application/vnd.anser-web-certificate-issue-initiation' => 'cii', |
| 148 |
'application/vnd.anser-web-funds-transfer-initiation' => 'fti', |
| 149 |
'application/vnd.antix.game-component' => 'atx', |
| 150 |
'application/vnd.apple.installer+xml' => 'mpkg', |
| 151 |
'application/vnd.apple.mpegurl' => 'm3u8', |
| 152 |
'application/vnd.aristanetworks.swi' => 'swi', |
| 153 |
'application/vnd.astraea-software.iota' => 'iota', |
| 154 |
'application/vnd.audiograph' => 'aep', |
| 155 |
'application/vnd.blueice.multipass' => 'mpm', |
| 156 |
'application/vnd.bmi' => 'bmi', |
| 157 |
'application/vnd.businessobjects' => 'rep', |
| 158 |
'application/vnd.chemdraw+xml' => 'cdxml', |
| 159 |
'application/vnd.chipnuts.karaoke-mmd' => 'mmd', |
| 160 |
'application/vnd.cinderella' => 'cdy', |
| 161 |
'application/vnd.claymore' => 'cla', |
| 162 |
'application/vnd.cloanto.rp9' => 'rp9', |
| 163 |
'application/vnd.clonk.c4group' => 'c4g', |
| 164 |
'application/vnd.cluetrust.cartomobile-config' => 'c11amc', |
| 165 |
'application/vnd.cluetrust.cartomobile-config-pkg' => 'c11amz', |
| 166 |
'application/vnd.commonspace' => 'csp', |
| 167 |
'application/vnd.contact.cmsg' => 'cdbcmsg', |
| 168 |
'application/vnd.cosmocaller' => 'cmc', |
| 169 |
'application/vnd.crick.clicker' => 'clkx', |
| 170 |
'application/vnd.crick.clicker.keyboard' => 'clkk', |
| 171 |
'application/vnd.crick.clicker.palette' => 'clkp', |
| 172 |
'application/vnd.crick.clicker.template' => 'clkt', |
| 173 |
'application/vnd.crick.clicker.wordbank' => 'clkw', |
| 174 |
'application/vnd.criticaltools.wbs+xml' => 'wbs', |
| 175 |
'application/vnd.ctc-posml' => 'pml', |
| 176 |
'application/vnd.cups-ppd' => 'ppd', |
| 177 |
'application/vnd.curl.car' => 'car', |
| 178 |
'application/vnd.curl.pcurl' => 'pcurl', |
| 179 |
'application/vnd.dart' => 'dart', |
| 180 |
'application/vnd.data-vision.rdz' => 'rdz', |
| 181 |
'application/vnd.dece.data' => 'uvf', |
| 182 |
'application/vnd.dece.ttml+xml' => 'uvt', |
| 183 |
'application/vnd.dece.unspecified' => 'uvx', |
| 184 |
'application/vnd.dece.zip' => 'uvz', |
| 185 |
'application/vnd.denovo.fcselayout-link' => 'fe_launch', |
| 186 |
'application/vnd.dna' => 'dna', |
| 187 |
'application/vnd.dolby.mlp' => 'mlp', |
| 188 |
'application/vnd.dpgraph' => 'dpg', |
| 189 |
'application/vnd.dreamfactory' => 'dfac', |
| 190 |
'application/vnd.ds-keypoint' => 'kpxx', |
| 191 |
'application/vnd.dvb.ait' => 'ait', |
| 192 |
'application/vnd.dvb.service' => 'svc', |
| 193 |
'application/vnd.dynageo' => 'geo', |
| 194 |
'application/vnd.ecowin.chart' => 'mag', |
| 195 |
'application/vnd.enliven' => 'nml', |
| 196 |
'application/vnd.epson.esf' => 'esf', |
| 197 |
'application/vnd.epson.msf' => 'msf', |
| 198 |
'application/vnd.epson.quickanime' => 'qam', |
| 199 |
'application/vnd.epson.salt' => 'slt', |
| 200 |
'application/vnd.epson.ssf' => 'ssf', |
| 201 |
'application/vnd.eszigno3+xml' => 'es3', |
| 202 |
'application/vnd.ezpix-album' => 'ez2', |
| 203 |
'application/vnd.ezpix-package' => 'ez3', |
| 204 |
'application/vnd.fdf' => 'fdf', |
| 205 |
'application/vnd.fdsn.mseed' => 'mseed', |
| 206 |
'application/vnd.fdsn.seed' => 'seed', |
| 207 |
'application/vnd.flographit' => 'gph', |
| 208 |
'application/vnd.fluxtime.clip' => 'ftc', |
| 209 |
'application/vnd.framemaker' => 'fm', |
| 210 |
'application/vnd.frogans.fnc' => 'fnc', |
| 211 |
'application/vnd.frogans.ltf' => 'ltf', |
| 212 |
'application/vnd.fsc.weblaunch' => 'fsc', |
| 213 |
'application/vnd.fujitsu.oasys' => 'oas', |
| 214 |
'application/vnd.fujitsu.oasys2' => 'oa2', |
| 215 |
'application/vnd.fujitsu.oasys3' => 'oa3', |
| 216 |
'application/vnd.fujitsu.oasysgp' => 'fg5', |
| 217 |
'application/vnd.fujitsu.oasysprs' => 'bh2', |
| 218 |
'application/vnd.fujixerox.ddd' => 'ddd', |
| 219 |
'application/vnd.fujixerox.docuworks' => 'xdw', |
| 220 |
'application/vnd.fujixerox.docuworks.binder' => 'xbd', |
| 221 |
'application/vnd.fuzzysheet' => 'fzs', |
| 222 |
'application/vnd.genomatix.tuxedo' => 'txd', |
| 223 |
'application/vnd.geogebra.file' => 'ggb', |
| 224 |
'application/vnd.geogebra.tool' => 'ggt', |
| 225 |
'application/vnd.geometry-explorer' => 'gex', |
| 226 |
'application/vnd.geonext' => 'gxt', |
| 227 |
'application/vnd.geoplan' => 'g2w', |
| 228 |
'application/vnd.geospace' => 'g3w', |
| 229 |
'application/vnd.gmx' => 'gmx', |
| 230 |
'application/vnd.google-earth.kml+xml' => 'kml', |
| 231 |
'application/vnd.google-earth.kmz' => 'kmz', |
| 232 |
'application/vnd.grafeq' => 'gqf', |
| 233 |
'application/vnd.groove-account' => 'gac', |
| 234 |
'application/vnd.groove-help' => 'ghf', |
| 235 |
'application/vnd.groove-identity-message' => 'gim', |
| 236 |
'application/vnd.groove-injector' => 'grv', |
| 237 |
'application/vnd.groove-tool-message' => 'gtm', |
| 238 |
'application/vnd.groove-tool-template' => 'tpl', |
| 239 |
'application/vnd.groove-vcard' => 'vcg', |
| 240 |
'application/vnd.hal+xml' => 'hal', |
| 241 |
'application/vnd.handheld-entertainment+xml' => 'zmm', |
| 242 |
'application/vnd.hbci' => 'hbci', |
| 243 |
'application/vnd.hhe.lesson-player' => 'les', |
| 244 |
'application/vnd.hp-hpgl' => 'hpgl', |
| 245 |
'application/vnd.hp-hpid' => 'hpid', |
| 246 |
'application/vnd.hp-hps' => 'hps', |
| 247 |
'application/vnd.hp-jlyt' => 'jlt', |
| 248 |
'application/vnd.hp-pcl' => 'pcl', |
| 249 |
'application/vnd.hp-pclxl' => 'pclxl', |
| 250 |
'application/vnd.hydrostatix.sof-data' => 'sfd-hdstx', |
| 251 |
'application/vnd.ibm.minipay' => 'mpy', |
| 252 |
'application/vnd.ibm.modcap' => 'afp', |
| 253 |
'application/vnd.ibm.rights-management' => 'irm', |
| 254 |
'application/vnd.ibm.secure-container' => 'sc', |
| 255 |
'application/vnd.iccprofile' => 'icc', |
| 256 |
'application/vnd.igloader' => 'igl', |
| 257 |
'application/vnd.immervision-ivp' => 'ivp', |
| 258 |
'application/vnd.immervision-ivu' => 'ivu', |
| 259 |
'application/vnd.insors.igm' => 'igm', |
| 260 |
'application/vnd.intercon.formnet' => 'xpw', |
| 261 |
'application/vnd.intergeo' => 'i2g', |
| 262 |
'application/vnd.intu.qbo' => 'qbo', |
| 263 |
'application/vnd.intu.qfx' => 'qfx', |
| 264 |
'application/vnd.ipunplugged.rcprofile' => 'rcprofile', |
| 265 |
'application/vnd.irepository.package+xml' => 'irp', |
| 266 |
'application/vnd.is-xpr' => 'xpr', |
| 267 |
'application/vnd.isac.fcs' => 'fcs', |
| 268 |
'application/vnd.jam' => 'jam', |
| 269 |
'application/vnd.jcp.javame.midlet-rms' => 'rms', |
| 270 |
'application/vnd.jisp' => 'jisp', |
| 271 |
'application/vnd.joost.joda-archive' => 'joda', |
| 272 |
'application/vnd.kahootz' => 'ktz', |
| 273 |
'application/vnd.kde.karbon' => 'karbon', |
| 274 |
'application/vnd.kde.kchart' => 'chrt', |
| 275 |
'application/vnd.kde.kformula' => 'kfo', |
| 276 |
'application/vnd.kde.kivio' => 'flw', |
| 277 |
'application/vnd.kde.kontour' => 'kon', |
| 278 |
'application/vnd.kde.kpresenter' => 'kpr', |
| 279 |
'application/vnd.kde.kspread' => 'ksp', |
| 280 |
'application/vnd.kde.kword' => 'kwd', |
| 281 |
'application/vnd.kenameaapp' => 'htke', |
| 282 |
'application/vnd.kidspiration' => 'kia', |
| 283 |
'application/vnd.kinar' => 'kne', |
| 284 |
'application/vnd.koan' => 'skp', |
| 285 |
'application/vnd.kodak-descriptor' => 'sse', |
| 286 |
'application/vnd.las.las+xml' => 'lasxml', |
| 287 |
'application/vnd.llamagraphics.life-balance.desktop' => 'lbd', |
| 288 |
'application/vnd.llamagraphics.life-balance.exchange+xml' => 'lbe', |
| 289 |
'application/vnd.lotus-1-2-3' => '123', |
| 290 |
'application/vnd.lotus-approach' => 'apr', |
| 291 |
'application/vnd.lotus-freelance' => 'pre', |
| 292 |
'application/vnd.lotus-notes' => 'nsf', |
| 293 |
'application/vnd.lotus-organizer' => 'org', |
| 294 |
'application/vnd.lotus-screencam' => 'scm', |
| 295 |
'application/vnd.lotus-wordpro' => 'lwp', |
| 296 |
'application/vnd.macports.portpkg' => 'portpkg', |
| 297 |
'application/vnd.mcd' => 'mcd', |
| 298 |
'application/vnd.medcalcdata' => 'mc1', |
| 299 |
'application/vnd.mediastation.cdkey' => 'cdkey', |
| 300 |
'application/vnd.mfer' => 'mwf', |
| 301 |
'application/vnd.mfmp' => 'mfm', |
| 302 |
'application/vnd.micrografx.flo' => 'flo', |
| 303 |
'application/vnd.micrografx.igx' => 'igx', |
| 304 |
'application/vnd.mif' => 'mif', |
| 305 |
'application/vnd.mobius.daf' => 'daf', |
| 306 |
'application/vnd.mobius.dis' => 'dis', |
| 307 |
'application/vnd.mobius.mbk' => 'mbk', |
| 308 |
'application/vnd.mobius.mqy' => 'mqy', |
| 309 |
'application/vnd.mobius.msl' => 'msl', |
| 310 |
'application/vnd.mobius.plc' => 'plc', |
| 311 |
'application/vnd.mobius.txf' => 'txf', |
| 312 |
'application/vnd.mophun.application' => 'mpn', |
| 313 |
'application/vnd.mophun.certificate' => 'mpc', |
| 314 |
'application/vnd.mozilla.xul+xml' => 'xul', |
| 315 |
'application/vnd.ms-artgalry' => 'cil', |
| 316 |
'application/vnd.ms-cab-compressed' => 'cab', |
| 317 |
'application/vnd.ms-excel' => 'xls', |
| 318 |
'application/vnd.ms-excel.addin.macroenabled.12' => 'xlam', |
| 319 |
'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 'xlsb', |
| 320 |
'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm', |
| 321 |
'application/vnd.ms-excel.template.macroenabled.12' => 'xltm', |
| 322 |
'application/vnd.ms-fontobject' => 'eot', |
| 323 |
'application/vnd.ms-htmlhelp' => 'chm', |
| 324 |
'application/vnd.ms-ims' => 'ims', |
| 325 |
'application/vnd.ms-lrm' => 'lrm', |
| 326 |
'application/vnd.ms-officetheme' => 'thmx', |
| 327 |
'application/vnd.ms-pki.seccat' => 'cat', |
| 328 |
'application/vnd.ms-pki.stl' => 'stl', |
| 329 |
'application/vnd.ms-powerpoint' => 'ppt', |
| 330 |
'application/vnd.ms-powerpoint.addin.macroenabled.12' => 'ppam', |
| 331 |
'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 'pptm', |
| 332 |
'application/vnd.ms-powerpoint.slide.macroenabled.12' => 'sldm', |
| 333 |
'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 'ppsm', |
| 334 |
'application/vnd.ms-powerpoint.template.macroenabled.12' => 'potm', |
| 335 |
'application/vnd.ms-project' => 'mpp', |
| 336 |
'application/vnd.ms-word.document.macroenabled.12' => 'docm', |
| 337 |
'application/vnd.ms-word.template.macroenabled.12' => 'dotm', |
| 338 |
'application/vnd.ms-works' => 'wps', |
| 339 |
'application/vnd.ms-wpl' => 'wpl', |
| 340 |
'application/vnd.ms-xpsdocument' => 'xps', |
| 341 |
'application/vnd.mseq' => 'mseq', |
| 342 |
'application/vnd.musician' => 'mus', |
| 343 |
'application/vnd.muvee.style' => 'msty', |
| 344 |
'application/vnd.mynfc' => 'taglet', |
| 345 |
'application/vnd.neurolanguage.nlu' => 'nlu', |
| 346 |
'application/vnd.nitf' => 'ntf', |
| 347 |
'application/vnd.noblenet-directory' => 'nnd', |
| 348 |
'application/vnd.noblenet-sealer' => 'nns', |
| 349 |
'application/vnd.noblenet-web' => 'nnw', |
| 350 |
'application/vnd.nokia.n-gage.data' => 'ngdat', |
| 351 |
'application/vnd.nokia.n-gage.symbian.install' => 'n-gage', |
| 352 |
'application/vnd.nokia.radio-preset' => 'rpst', |
| 353 |
'application/vnd.nokia.radio-presets' => 'rpss', |
| 354 |
'application/vnd.novadigm.edm' => 'edm', |
| 355 |
'application/vnd.novadigm.edx' => 'edx', |
| 356 |
'application/vnd.novadigm.ext' => 'ext', |
| 357 |
'application/vnd.oasis.opendocument.chart' => 'odc', |
| 358 |
'application/vnd.oasis.opendocument.chart-template' => 'otc', |
| 359 |
'application/vnd.oasis.opendocument.database' => 'odb', |
| 360 |
'application/vnd.oasis.opendocument.formula' => 'odf', |
| 361 |
'application/vnd.oasis.opendocument.formula-template' => 'odft', |
| 362 |
'application/vnd.oasis.opendocument.graphics' => 'odg', |
| 363 |
'application/vnd.oasis.opendocument.graphics-template' => 'otg', |
| 364 |
'application/vnd.oasis.opendocument.image' => 'odi', |
| 365 |
'application/vnd.oasis.opendocument.image-template' => 'oti', |
| 366 |
'application/vnd.oasis.opendocument.presentation' => 'odp', |
| 367 |
'application/vnd.oasis.opendocument.presentation-template' => 'otp', |
| 368 |
'application/vnd.oasis.opendocument.spreadsheet' => 'ods', |
| 369 |
'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots', |
| 370 |
'application/vnd.oasis.opendocument.text' => 'odt', |
| 371 |
'application/vnd.oasis.opendocument.text-master' => 'odm', |
| 372 |
'application/vnd.oasis.opendocument.text-template' => 'ott', |
| 373 |
'application/vnd.oasis.opendocument.text-web' => 'oth', |
| 374 |
'application/vnd.olpc-sugar' => 'xo', |
| 375 |
'application/vnd.oma.dd2+xml' => 'dd2', |
| 376 |
'application/vnd.openofficeorg.extension' => 'oxt', |
| 377 |
'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', |
| 378 |
'application/vnd.openxmlformats-officedocument.presentationml.slide' => 'sldx', |
| 379 |
'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'ppsx', |
| 380 |
'application/vnd.openxmlformats-officedocument.presentationml.template' => 'potx', |
| 381 |
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx', |
| 382 |
'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 'xltx', |
| 383 |
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', |
| 384 |
'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx', |
| 385 |
'application/vnd.osgeo.mapguide.package' => 'mgp', |
| 386 |
'application/vnd.osgi.dp' => 'dp', |
| 387 |
'application/vnd.osgi.subsystem' => 'esa', |
| 388 |
'application/vnd.palm' => 'pdb', |
| 389 |
'application/vnd.pawaafile' => 'paw', |
| 390 |
'application/vnd.pg.format' => 'str', |
| 391 |
'application/vnd.pg.osasli' => 'ei6', |
| 392 |
'application/vnd.picsel' => 'efif', |
| 393 |
'application/vnd.pmi.widget' => 'wg', |
| 394 |
'application/vnd.pocketlearn' => 'plf', |
| 395 |
'application/vnd.powerbuilder6' => 'pbd', |
| 396 |
'application/vnd.previewsystems.box' => 'box', |
| 397 |
'application/vnd.proteus.magazine' => 'mgz', |
| 398 |
'application/vnd.publishare-delta-tree' => 'qps', |
| 399 |
'application/vnd.pvi.ptid1' => 'ptid', |
| 400 |
'application/vnd.quark.quarkxpress' => 'qxd', |
| 401 |
'application/vnd.realvnc.bed' => 'bed', |
| 402 |
'application/vnd.recordare.musicxml' => 'mxl', |
| 403 |
'application/vnd.recordare.musicxml+xml' => 'musicxml', |
| 404 |
'application/vnd.rig.cryptonote' => 'cryptonote', |
| 405 |
'application/vnd.rim.cod' => 'cod', |
| 406 |
'application/vnd.rn-realmedia' => 'rm', |
| 407 |
'application/vnd.rn-realmedia-vbr' => 'rmvb', |
| 408 |
'application/vnd.route66.link66+xml' => 'link66', |
| 409 |
'application/vnd.sailingtracker.track' => 'st', |
| 410 |
'application/vnd.seemail' => 'see', |
| 411 |
'application/vnd.sema' => 'sema', |
| 412 |
'application/vnd.semd' => 'semd', |
| 413 |
'application/vnd.semf' => 'semf', |
| 414 |
'application/vnd.shana.informed.formdata' => 'ifm', |
| 415 |
'application/vnd.shana.informed.formtemplate' => 'itp', |
| 416 |
'application/vnd.shana.informed.interchange' => 'iif', |
| 417 |
'application/vnd.shana.informed.package' => 'ipk', |
| 418 |
'application/vnd.simtech-mindmapper' => 'twd', |
| 419 |
'application/vnd.smaf' => 'mmf', |
| 420 |
'application/vnd.smart.teacher' => 'teacher', |
| 421 |
'application/vnd.solent.sdkm+xml' => 'sdkm', |
| 422 |
'application/vnd.spotfire.dxp' => 'dxp', |
| 423 |
'application/vnd.spotfire.sfs' => 'sfs', |
| 424 |
'application/vnd.stardivision.calc' => 'sdc', |
| 425 |
'application/vnd.stardivision.draw' => 'sda', |
| 426 |
'application/vnd.stardivision.impress' => 'sdd', |
| 427 |
'application/vnd.stardivision.math' => 'smf', |
| 428 |
'application/vnd.stardivision.writer' => 'sdw', |
| 429 |
'application/vnd.stardivision.writer-global' => 'sgl', |
| 430 |
'application/vnd.stepmania.package' => 'smzip', |
| 431 |
'application/vnd.stepmania.stepchart' => 'sm', |
| 432 |
'application/vnd.sun.xml.calc' => 'sxc', |
| 433 |
'application/vnd.sun.xml.calc.template' => 'stc', |
| 434 |
'application/vnd.sun.xml.draw' => 'sxd', |
| 435 |
'application/vnd.sun.xml.draw.template' => 'std', |
| 436 |
'application/vnd.sun.xml.impress' => 'sxi', |
| 437 |
'application/vnd.sun.xml.impress.template' => 'sti', |
| 438 |
'application/vnd.sun.xml.math' => 'sxm', |
| 439 |
'application/vnd.sun.xml.writer' => 'sxw', |
| 440 |
'application/vnd.sun.xml.writer.global' => 'sxg', |
| 441 |
'application/vnd.sun.xml.writer.template' => 'stw', |
| 442 |
'application/vnd.sus-calendar' => 'sus', |
| 443 |
'application/vnd.svd' => 'svd', |
| 444 |
'application/vnd.symbian.install' => 'sis', |
| 445 |
'application/vnd.syncml+xml' => 'xsm', |
| 446 |
'application/vnd.syncml.dm+wbxml' => 'bdm', |
| 447 |
'application/vnd.syncml.dm+xml' => 'xdm', |
| 448 |
'application/vnd.tao.intent-module-archive' => 'tao', |
| 449 |
'application/vnd.tcpdump.pcap' => 'pcap', |
| 450 |
'application/vnd.tmobile-livetv' => 'tmo', |
| 451 |
'application/vnd.trid.tpt' => 'tpt', |
| 452 |
'application/vnd.triscape.mxs' => 'mxs', |
| 453 |
'application/vnd.trueapp' => 'tra', |
| 454 |
'application/vnd.ufdl' => 'ufd', |
| 455 |
'application/vnd.uiq.theme' => 'utz', |
| 456 |
'application/vnd.umajin' => 'umj', |
| 457 |
'application/vnd.unity' => 'unityweb', |
| 458 |
'application/vnd.uoml+xml' => 'uoml', |
| 459 |
'application/vnd.vcx' => 'vcx', |
| 460 |
'application/vnd.visio' => 'vsd', |
| 461 |
'application/vnd.visionary' => 'vis', |
| 462 |
'application/vnd.vsf' => 'vsf', |
| 463 |
'application/vnd.wap.wbxml' => 'wbxml', |
| 464 |
'application/vnd.wap.wmlc' => 'wmlc', |
| 465 |
'application/vnd.wap.wmlscriptc' => 'wmlsc', |
| 466 |
'application/vnd.webturbo' => 'wtb', |
| 467 |
'application/vnd.wolfram.player' => 'nbp', |
| 468 |
'application/vnd.wordperfect' => 'wpd', |
| 469 |
'application/vnd.wqd' => 'wqd', |
| 470 |
'application/vnd.wt.stf' => 'stf', |
| 471 |
'application/vnd.xara' => 'xar', |
| 472 |
'application/vnd.xfdl' => 'xfdl', |
| 473 |
'application/vnd.yamaha.hv-dic' => 'hvd', |
| 474 |
'application/vnd.yamaha.hv-script' => 'hvs', |
| 475 |
'application/vnd.yamaha.hv-voice' => 'hvp', |
| 476 |
'application/vnd.yamaha.openscoreformat' => 'osf', |
| 477 |
'application/vnd.yamaha.openscoreformat.osfpvg+xml' => 'osfpvg', |
| 478 |
'application/vnd.yamaha.smaf-audio' => 'saf', |
| 479 |
'application/vnd.yamaha.smaf-phrase' => 'spf', |
| 480 |
'application/vnd.yellowriver-custom-menu' => 'cmp', |
| 481 |
'application/vnd.zul' => 'zir', |
| 482 |
'application/vnd.zzazz.deck+xml' => 'zaz', |
| 483 |
'application/voicexml+xml' => 'vxml', |
| 484 |
'application/widget' => 'wgt', |
| 485 |
'application/winhlp' => 'hlp', |
| 486 |
'application/wsdl+xml' => 'wsdl', |
| 487 |
'application/wspolicy+xml' => 'wspolicy', |
| 488 |
'application/x-7z-compressed' => '7z', |
| 489 |
'application/x-abiword' => 'abw', |
| 490 |
'application/x-ace-compressed' => 'ace', |
| 491 |
'application/x-apple-diskimage' => 'dmg', |
| 492 |
'application/x-authorware-bin' => 'aab', |
| 493 |
'application/x-authorware-map' => 'aam', |
| 494 |
'application/x-authorware-seg' => 'aas', |
| 495 |
'application/x-bcpio' => 'bcpio', |
| 496 |
'application/x-bittorrent' => 'torrent', |
| 497 |
'application/x-blorb' => 'blb', |
| 498 |
'application/x-bzip' => 'bz', |
| 499 |
'application/x-bzip2' => 'bz2', |
| 500 |
'application/x-cbr' => 'cbr', |
| 501 |
'application/x-cdlink' => 'vcd', |
| 502 |
'application/x-cfs-compressed' => 'cfs', |
| 503 |
'application/x-chat' => 'chat', |
| 504 |
'application/x-chess-pgn' => 'pgn', |
| 505 |
'application/x-conference' => 'nsc', |
| 506 |
'application/x-cpio' => 'cpio', |
| 507 |
'application/x-csh' => 'csh', |
| 508 |
'application/x-debian-package' => 'deb', |
| 509 |
'application/x-dgc-compressed' => 'dgc', |
| 510 |
'application/x-director' => 'dir', |
| 511 |
'application/x-doom' => 'wad', |
| 512 |
'application/x-dtbncx+xml' => 'ncx', |
| 513 |
'application/x-dtbook+xml' => 'dtb', |
| 514 |
'application/x-dtbresource+xml' => 'res', |
| 515 |
'application/x-dvi' => 'dvi', |
| 516 |
'application/x-envoy' => 'evy', |
| 517 |
'application/x-eva' => 'eva', |
| 518 |
'application/x-font-bdf' => 'bdf', |
| 519 |
'application/x-font-ghostscript' => 'gsf', |
| 520 |
'application/x-font-linux-psf' => 'psf', |
| 521 |
'application/x-font-otf' => 'otf', |
| 522 |
'application/x-font-pcf' => 'pcf', |
| 523 |
'application/x-font-snf' => 'snf', |
| 524 |
'application/x-font-ttf' => 'ttf', |
| 525 |
'application/x-font-type1' => 'pfa', |
| 526 |
'application/x-font-woff' => 'woff', |
| 527 |
'application/x-freearc' => 'arc', |
| 528 |
'application/x-futuresplash' => 'spl', |
| 529 |
'application/x-gca-compressed' => 'gca', |
| 530 |
'application/x-glulx' => 'ulx', |
| 531 |
'application/x-gnumeric' => 'gnumeric', |
| 532 |
'application/x-gramps-xml' => 'gramps', |
| 533 |
'application/x-gtar' => 'gtar', |
| 534 |
'application/x-hdf' => 'hdf', |
| 535 |
'application/x-install-instructions' => 'install', |
| 536 |
'application/x-iso9660-image' => 'iso', |
| 537 |
'application/x-java-jnlp-file' => 'jnlp', |
| 538 |
'application/x-latex' => 'latex', |
| 539 |
'application/x-lzh-compressed' => 'lzh', |
| 540 |
'application/x-mie' => 'mie', |
| 541 |
'application/x-mobipocket-ebook' => 'prc', |
| 542 |
'application/x-ms-application' => 'application', |
| 543 |
'application/x-ms-shortcut' => 'lnk', |
| 544 |
'application/x-ms-wmd' => 'wmd', |
| 545 |
'application/x-ms-wmz' => 'wmz', |
| 546 |
'application/x-ms-xbap' => 'xbap', |
| 547 |
'application/x-msaccess' => 'mdb', |
| 548 |
'application/x-msbinder' => 'obd', |
| 549 |
'application/x-mscardfile' => 'crd', |
| 550 |
'application/x-msclip' => 'clp', |
| 551 |
'application/x-msdownload' => 'exe', |
| 552 |
'application/x-msmediaview' => 'mvb', |
| 553 |
'application/x-msmetafile' => 'wmf', |
| 554 |
'application/x-msmoney' => 'mny', |
| 555 |
'application/x-mspublisher' => 'pub', |
| 556 |
'application/x-msschedule' => 'scd', |
| 557 |
'application/x-msterminal' => 'trm', |
| 558 |
'application/x-mswrite' => 'wri', |
| 559 |
'application/x-netcdf' => 'nc', |
| 560 |
'application/x-nzb' => 'nzb', |
| 561 |
'application/x-pkcs12' => 'p12', |
| 562 |
'application/x-pkcs7-certificates' => 'p7b', |
| 563 |
'application/x-pkcs7-certreqresp' => 'p7r', |
| 564 |
'application/x-rar-compressed' => 'rar', |
| 565 |
'application/x-rar' => 'rar', |
| 566 |
'application/x-research-info-systems' => 'ris', |
| 567 |
'application/x-sh' => 'sh', |
| 568 |
'application/x-shar' => 'shar', |
| 569 |
'application/x-shockwave-flash' => 'swf', |
| 570 |
'application/x-silverlight-app' => 'xap', |
| 571 |
'application/x-sql' => 'sql', |
| 572 |
'application/x-stuffit' => 'sit', |
| 573 |
'application/x-stuffitx' => 'sitx', |
| 574 |
'application/x-subrip' => 'srt', |
| 575 |
'application/x-sv4cpio' => 'sv4cpio', |
| 576 |
'application/x-sv4crc' => 'sv4crc', |
| 577 |
'application/x-t3vm-image' => 't3', |
| 578 |
'application/x-tads' => 'gam', |
| 579 |
'application/x-tar' => 'tar', |
| 580 |
'application/x-tcl' => 'tcl', |
| 581 |
'application/x-tex' => 'tex', |
| 582 |
'application/x-tex-tfm' => 'tfm', |
| 583 |
'application/x-texinfo' => 'texinfo', |
| 584 |
'application/x-tgif' => 'obj', |
| 585 |
'application/x-ustar' => 'ustar', |
| 586 |
'application/x-wais-source' => 'src', |
| 587 |
'application/x-x509-ca-cert' => 'der', |
| 588 |
'application/x-xfig' => 'fig', |
| 589 |
'application/x-xliff+xml' => 'xlf', |
| 590 |
'application/x-xpinstall' => 'xpi', |
| 591 |
'application/x-xz' => 'xz', |
| 592 |
'application/x-zmachine' => 'z1', |
| 593 |
'application/xaml+xml' => 'xaml', |
| 594 |
'application/xcap-diff+xml' => 'xdf', |
| 595 |
'application/xenc+xml' => 'xenc', |
| 596 |
'application/xhtml+xml' => 'xhtml', |
| 597 |
'application/xml' => 'xml', |
| 598 |
'application/xml-dtd' => 'dtd', |
| 599 |
'application/xop+xml' => 'xop', |
| 600 |
'application/xproc+xml' => 'xpl', |
| 601 |
'application/xslt+xml' => 'xslt', |
| 602 |
'application/xspf+xml' => 'xspf', |
| 603 |
'application/xv+xml' => 'mxml', |
| 604 |
'application/yang' => 'yang', |
| 605 |
'application/yin+xml' => 'yin', |
| 606 |
'application/zip' => 'zip', |
| 607 |
'audio/adpcm' => 'adp', |
| 608 |
'audio/basic' => 'au', |
| 609 |
'audio/midi' => 'mid', |
| 610 |
'audio/mp4' => 'mp4a', |
| 611 |
'audio/mpeg' => 'mp3', |
| 612 |
'audio/ogg' => 'oga', |
| 613 |
'audio/s3m' => 's3m', |
| 614 |
'audio/silk' => 'sil', |
| 615 |
'audio/vnd.dece.audio' => 'uva', |
| 616 |
'audio/vnd.digital-winds' => 'eol', |
| 617 |
'audio/vnd.dra' => 'dra', |
| 618 |
'audio/vnd.dts' => 'dts', |
| 619 |
'audio/vnd.dts.hd' => 'dtshd', |
| 620 |
'audio/vnd.lucent.voice' => 'lvp', |
| 621 |
'audio/vnd.ms-playready.media.pya' => 'pya', |
| 622 |
'audio/vnd.nuera.ecelp4800' => 'ecelp4800', |
| 623 |
'audio/vnd.nuera.ecelp7470' => 'ecelp7470', |
| 624 |
'audio/vnd.nuera.ecelp9600' => 'ecelp9600', |
| 625 |
'audio/vnd.rip' => 'rip', |
| 626 |
'audio/webm' => 'weba', |
| 627 |
'audio/x-aac' => 'aac', |
| 628 |
'audio/x-aiff' => 'aif', |
| 629 |
'audio/x-caf' => 'caf', |
| 630 |
'audio/x-flac' => 'flac', |
| 631 |
'audio/x-matroska' => 'mka', |
| 632 |
'audio/x-mpegurl' => 'm3u', |
| 633 |
'audio/x-ms-wax' => 'wax', |
| 634 |
'audio/x-ms-wma' => 'wma', |
| 635 |
'audio/x-pn-realaudio' => 'ram', |
| 636 |
'audio/x-pn-realaudio-plugin' => 'rmp', |
| 637 |
'audio/x-wav' => 'wav', |
| 638 |
'audio/xm' => 'xm', |
| 639 |
'chemical/x-cdx' => 'cdx', |
| 640 |
'chemical/x-cif' => 'cif', |
| 641 |
'chemical/x-cmdf' => 'cmdf', |
| 642 |
'chemical/x-cml' => 'cml', |
| 643 |
'chemical/x-csml' => 'csml', |
| 644 |
'chemical/x-xyz' => 'xyz', |
| 645 |
'image/bmp' => 'bmp', |
| 646 |
'image/x-ms-bmp' => 'bmp', |
| 647 |
'image/cgm' => 'cgm', |
| 648 |
'image/g3fax' => 'g3', |
| 649 |
'image/gif' => 'gif', |
| 650 |
'image/ief' => 'ief', |
| 651 |
'image/jpeg' => 'jpeg', |
| 652 |
'image/pjpeg' => 'jpeg', |
| 653 |
'image/ktx' => 'ktx', |
| 654 |
'image/png' => 'png', |
| 655 |
'image/prs.btif' => 'btif', |
| 656 |
'image/sgi' => 'sgi', |
| 657 |
'image/svg+xml' => 'svg', |
| 658 |
'image/tiff' => 'tiff', |
| 659 |
'image/vnd.adobe.photoshop' => 'psd', |
| 660 |
'image/vnd.dece.graphic' => 'uvi', |
| 661 |
'image/vnd.dvb.subtitle' => 'sub', |
| 662 |
'image/vnd.djvu' => 'djvu', |
| 663 |
'image/vnd.dwg' => 'dwg', |
| 664 |
'image/vnd.dxf' => 'dxf', |
| 665 |
'image/vnd.fastbidsheet' => 'fbs', |
| 666 |
'image/vnd.fpx' => 'fpx', |
| 667 |
'image/vnd.fst' => 'fst', |
| 668 |
'image/vnd.fujixerox.edmics-mmr' => 'mmr', |
| 669 |
'image/vnd.fujixerox.edmics-rlc' => 'rlc', |
| 670 |
'image/vnd.ms-modi' => 'mdi', |
| 671 |
'image/vnd.ms-photo' => 'wdp', |
| 672 |
'image/vnd.net-fpx' => 'npx', |
| 673 |
'image/vnd.wap.wbmp' => 'wbmp', |
| 674 |
'image/vnd.xiff' => 'xif', |
| 675 |
'image/webp' => 'webp', |
| 676 |
'image/x-3ds' => '3ds', |
| 677 |
'image/x-cmu-raster' => 'ras', |
| 678 |
'image/x-cmx' => 'cmx', |
| 679 |
'image/x-freehand' => 'fh', |
| 680 |
'image/x-icon' => 'ico', |
| 681 |
'image/x-mrsid-image' => 'sid', |
| 682 |
'image/x-pcx' => 'pcx', |
| 683 |
'image/x-pict' => 'pic', |
| 684 |
'image/x-portable-anymap' => 'pnm', |
| 685 |
'image/x-portable-bitmap' => 'pbm', |
| 686 |
'image/x-portable-graymap' => 'pgm', |
| 687 |
'image/x-portable-pixmap' => 'ppm', |
| 688 |
'image/x-rgb' => 'rgb', |
| 689 |
'image/x-tga' => 'tga', |
| 690 |
'image/x-xbitmap' => 'xbm', |
| 691 |
'image/x-xpixmap' => 'xpm', |
| 692 |
'image/x-xwindowdump' => 'xwd', |
| 693 |
'message/rfc822' => 'eml', |
| 694 |
'model/iges' => 'igs', |
| 695 |
'model/mesh' => 'msh', |
| 696 |
'model/vnd.collada+xml' => 'dae', |
| 697 |
'model/vnd.dwf' => 'dwf', |
| 698 |
'model/vnd.gdl' => 'gdl', |
| 699 |
'model/vnd.gtw' => 'gtw', |
| 700 |
'model/vnd.mts' => 'mts', |
| 701 |
'model/vnd.vtu' => 'vtu', |
| 702 |
'model/vrml' => 'wrl', |
| 703 |
'model/x3d+binary' => 'x3db', |
| 704 |
'model/x3d+vrml' => 'x3dv', |
| 705 |
'model/x3d+xml' => 'x3d', |
| 706 |
'text/cache-manifest' => 'appcache', |
| 707 |
'text/calendar' => 'ics', |
| 708 |
'text/css' => 'css', |
| 709 |
'text/csv' => 'csv', |
| 710 |
'text/html' => 'html', |
| 711 |
'text/n3' => 'n3', |
| 712 |
'text/plain' => 'txt', |
| 713 |
'text/prs.lines.tag' => 'dsc', |
| 714 |
'text/richtext' => 'rtx', |
| 715 |
'text/rtf' => 'rtf', |
| 716 |
'text/sgml' => 'sgml', |
| 717 |
'text/tab-separated-values' => 'tsv', |
| 718 |
'text/troff' => 't', |
| 719 |
'text/turtle' => 'ttl', |
| 720 |
'text/uri-list' => 'uri', |
| 721 |
'text/vcard' => 'vcard', |
| 722 |
'text/vnd.curl' => 'curl', |
| 723 |
'text/vnd.curl.dcurl' => 'dcurl', |
| 724 |
'text/vnd.curl.scurl' => 'scurl', |
| 725 |
'text/vnd.curl.mcurl' => 'mcurl', |
| 726 |
'text/vnd.dvb.subtitle' => 'sub', |
| 727 |
'text/vnd.fly' => 'fly', |
| 728 |
'text/vnd.fmi.flexstor' => 'flx', |
| 729 |
'text/vnd.graphviz' => 'gv', |
| 730 |
'text/vnd.in3d.3dml' => '3dml', |
| 731 |
'text/vnd.in3d.spot' => 'spot', |
| 732 |
'text/vnd.sun.j2me.app-descriptor' => 'jad', |
| 733 |
'text/vnd.wap.wml' => 'wml', |
| 734 |
'text/vnd.wap.wmlscript' => 'wmls', |
| 735 |
'text/vtt' => 'vtt', |
| 736 |
'text/x-asm' => 's', |
| 737 |
'text/x-c' => 'c', |
| 738 |
'text/x-fortran' => 'f', |
| 739 |
'text/x-pascal' => 'p', |
| 740 |
'text/x-java-source' => 'java', |
| 741 |
'text/x-opml' => 'opml', |
| 742 |
'text/x-nfo' => 'nfo', |
| 743 |
'text/x-setext' => 'etx', |
| 744 |
'text/x-sfv' => 'sfv', |
| 745 |
'text/x-uuencode' => 'uu', |
| 746 |
'text/x-vcalendar' => 'vcs', |
| 747 |
'text/x-vcard' => 'vcf', |
| 748 |
'video/3gpp' => '3gp', |
| 749 |
'video/3gpp2' => '3g2', |
| 750 |
'video/h261' => 'h261', |
| 751 |
'video/h263' => 'h263', |
| 752 |
'video/h264' => 'h264', |
| 753 |
'video/jpeg' => 'jpgv', |
| 754 |
'video/jpm' => 'jpm', |
| 755 |
'video/mj2' => 'mj2', |
| 756 |
'video/mp4' => 'mp4', |
| 757 |
'video/mpeg' => 'mpeg', |
| 758 |
'video/ogg' => 'ogv', |
| 759 |
'video/quicktime' => 'qt', |
| 760 |
'video/vnd.dece.hd' => 'uvh', |
| 761 |
'video/vnd.dece.mobile' => 'uvm', |
| 762 |
'video/vnd.dece.pd' => 'uvp', |
| 763 |
'video/vnd.dece.sd' => 'uvs', |
| 764 |
'video/vnd.dece.video' => 'uvv', |
| 765 |
'video/vnd.dvb.file' => 'dvb', |
| 766 |
'video/vnd.fvt' => 'fvt', |
| 767 |
'video/vnd.mpegurl' => 'mxu', |
| 768 |
'video/vnd.ms-playready.media.pyv' => 'pyv', |
| 769 |
'video/vnd.uvvu.mp4' => 'uvu', |
| 770 |
'video/vnd.vivo' => 'viv', |
| 771 |
'video/webm' => 'webm', |
| 772 |
'video/x-f4v' => 'f4v', |
| 773 |
'video/x-fli' => 'fli', |
| 774 |
'video/x-flv' => 'flv', |
| 775 |
'video/x-m4v' => 'm4v', |
| 776 |
'video/x-matroska' => 'mkv', |
| 777 |
'video/x-mng' => 'mng', |
| 778 |
'video/x-ms-asf' => 'asf', |
| 779 |
'video/x-ms-vob' => 'vob', |
| 780 |
'video/x-ms-wm' => 'wm', |
| 781 |
'video/x-ms-wmv' => 'wmv', |
| 782 |
'video/x-ms-wmx' => 'wmx', |
| 783 |
'video/x-ms-wvx' => 'wvx', |
| 784 |
'video/x-msvideo' => 'avi', |
| 785 |
'video/x-sgi-movie' => 'movie', |
| 786 |
'video/x-smv' => 'smv', |
| 787 |
'x-conference/x-cooltalk' => 'ice', |
| 788 |
]; |
| 789 |
|
| 790 |
/** |
| 791 |
* Original file name. |
| 792 |
* |
| 793 |
* @var string $originalName |
| 794 |
*/ |
| 795 |
private $originalName; |
| 796 |
|
| 797 |
/** |
| 798 |
* Mime type of the file. |
| 799 |
* |
| 800 |
* @var string $mimeType |
| 801 |
*/ |
| 802 |
private $mimeType; |
| 803 |
|
| 804 |
/** |
| 805 |
* File size in kilobyte. |
| 806 |
* |
| 807 |
* @var int|null $size |
| 808 |
*/ |
| 809 |
private $size; |
| 810 |
|
| 811 |
/** |
| 812 |
* File upload error. |
| 813 |
* |
| 814 |
* @var int $error |
| 815 |
*/ |
| 816 |
private $error; |
| 817 |
|
| 818 |
/** |
| 819 |
* HTTP File instantiator. |
| 820 |
* |
| 821 |
* @param $path |
| 822 |
* @param $originalName |
| 823 |
* @param null $mimeType |
| 824 |
* @param null $size |
| 825 |
* @param null $error |
| 826 |
*/ |
| 827 |
public function __construct($path, $originalName, $mimeType = null, $size = null, $error = null) |
| 828 |
{ |
| 829 |
$this->originalName = $this->getName($originalName); |
| 830 |
$this->mimeType = $mimeType ?: 'application/octet-stream'; |
| 831 |
$this->size = $size; |
| 832 |
$this->error = $error ?: UPLOAD_ERR_OK; |
| 833 |
|
| 834 |
parent::__construct($path); |
| 835 |
} |
| 836 |
|
| 837 |
/** |
| 838 |
* @taken from \Symfony\Component\HttpFoundation\File\File |
| 839 |
* |
| 840 |
* Returns locale independent base name of the given path. |
| 841 |
* |
| 842 |
* @param string $name The new file name |
| 843 |
* |
| 844 |
* @return string containing |
| 845 |
*/ |
| 846 |
public function getName($name) |
| 847 |
{ |
| 848 |
$originalName = str_replace('\\', '/', $name); |
| 849 |
$pos = strrpos($originalName, '/'); |
| 850 |
$originalName = false === $pos ? $originalName : substr($originalName, $pos + 1); |
| 851 |
|
| 852 |
return $originalName; |
| 853 |
} |
| 854 |
|
| 855 |
/** |
| 856 |
* Get the file upload error. |
| 857 |
* |
| 858 |
* @return int |
| 859 |
*/ |
| 860 |
public function getError() |
| 861 |
{ |
| 862 |
return $this->error; |
| 863 |
} |
| 864 |
|
| 865 |
/** |
| 866 |
* Returns whether the file was uploaded successfully. |
| 867 |
* |
| 868 |
* @return bool True if the file has been uploaded with HTTP and no error occurred |
| 869 |
*/ |
| 870 |
public function isValid() |
| 871 |
{ |
| 872 |
$isOk = UPLOAD_ERR_OK === $this->getError(); |
| 873 |
|
| 874 |
return $isOk && is_uploaded_file($this->getPathname()); |
| 875 |
} |
| 876 |
|
| 877 |
/** |
| 878 |
* Returns the original file extension. |
| 879 |
* |
| 880 |
* It is extracted from the original file name that was uploaded. |
| 881 |
* Then it should not be considered as a safe value. |
| 882 |
* |
| 883 |
* @return string The extension |
| 884 |
*/ |
| 885 |
public function getClientOriginalExtension() |
| 886 |
{ |
| 887 |
return pathinfo($this->originalName, PATHINFO_EXTENSION); |
| 888 |
} |
| 889 |
|
| 890 |
/** |
| 891 |
* Take an educated guess of the file's extension. |
| 892 |
* |
| 893 |
* @return mixed|null |
| 894 |
*/ |
| 895 |
public function guessExtension() |
| 896 |
{ |
| 897 |
$type = $this->getMimeType(); |
| 898 |
return isset($this->defaultExtensions[$type]) ? $this->defaultExtensions[$type] : null; |
| 899 |
} |
| 900 |
|
| 901 |
/** |
| 902 |
* Take an educated guess of the file's mime type. |
| 903 |
* |
| 904 |
* @return string |
| 905 |
*/ |
| 906 |
public function getMimeType() |
| 907 |
{ |
| 908 |
$path = $this->getPathname(); |
| 909 |
if(!function_exists('wp_check_filetype_and_ext')) { |
| 910 |
require_once ABSPATH .'wp-admin/includes/file.php'; |
| 911 |
} |
| 912 |
$typeInfo = wp_check_filetype_and_ext($path, $this->originalName); |
| 913 |
|
| 914 |
return $typeInfo['type']; |
| 915 |
} |
| 916 |
|
| 917 |
/** |
| 918 |
* Get original HTTP file array |
| 919 |
* |
| 920 |
* @return array |
| 921 |
*/ |
| 922 |
public function toArray() |
| 923 |
{ |
| 924 |
return [ |
| 925 |
'name' => $this->originalName, |
| 926 |
'type' => $this->mimeType, |
| 927 |
'tmp_name' => $this->getPathname(), |
| 928 |
'error' => $this->error, |
| 929 |
'size' => $this->size |
| 930 |
]; |
| 931 |
} |
| 932 |
|
| 933 |
/** |
| 934 |
* Returns the contents of the file. |
| 935 |
* |
| 936 |
* @return string the contents of the file |
| 937 |
* |
| 938 |
* @throws \RuntimeException |
| 939 |
*/ |
| 940 |
public function getContents() |
| 941 |
{ |
| 942 |
$level = error_reporting(0); |
| 943 |
$content = file_get_contents($this->getPathname()); |
| 944 |
error_reporting($level); |
| 945 |
if (false === $content) { |
| 946 |
$error = error_get_last(); |
| 947 |
throw new \RuntimeException($error['message']); |
| 948 |
} |
| 949 |
|
| 950 |
return $content; |
| 951 |
} |
| 952 |
} |