In Python can SIE den MIME-Typ (Medientyp) basierend auf einer Dateinamen-/URL-Erweiterung erraten oder die Erweiterung basierend auf dem MIME-Typ mit den Mimetypen der Standardbibliothek erraten.
Dieser Artikel hat folgenden Inhalt.
Ein MIME-Typ ist eine zweiteilige Kennung für Dateiformate und Formatinhalte.
Verwenden Sie sterben Funktion believe_type(), um den MIME-Typ basierend auf Einem Dateinamen oder Einer URL zu erraten. Ein Tupel von (Typ, Kodierung) wird zurückgegeben.
import mimetypes
print(mimetypes.guess_type('test.jpg'))
# ('image/jpeg', None)
print(type(mimetypes.guess_type('test.jpg')))
# <class 'tuple'>
print(mimetypes.guess_type('test.jpg')[0])
# image/jpeg
print(type(mimetypes.guess_type('test.jpg')[0]))
# <class 'str'>
Das erste Element des Tupels, Typ, ist der MIME-Typ. Das zweite Element, encoding, ist ein Wert, wenn die Datei beispielsweise mit gzip komprimiert ist. Anders ist es keine.
print(mimetypes.guess_type('test.tar.gz'))
# ('application/x-tar', 'gzip')
SIE can Eine Pfadzeichenfolge angeben, sterben Ein Verzeichnis Oder Eine URL enthält. Es wird nur anhand der Erweiterung aufgestellt und nicht den Inhalt der Datei überprüft.
print(mimetypes.guess_type('dir/test.txt'))
# ('text/plain', None)
print(mimetypes.guess_type('https://example.com/test.html'))
# ('text/html', None)
Großbuchstaben sind zulässig.
print(mimetypes.guess_type('test.JPG'))
# ('image/jpeg', None)
Verwenden Sie believe_all_extensions() und believe_extension(), um Erweiterungen basierend auf dem MIME-Typ zu erraten.
believe_all_extensions() gibt eine Liste zurück, und believe_extension() gibt das erste Element in dieser Liste zurück.
print(mimetypes.guess_all_extensions('image/jpeg'))
# ['.jpe', '.jpeg', '.jpg']
print(mimetypes.guess_extension('image/jpeg'))
# .jpe
print(mimetypes.guess_all_extensions('text/plain'))
# ['.bat', '.c', '.h', '.ksh', '.pl', '.txt', '.text', '.conf', '.def', '.list', '.log', '.in']
print(mimetypes.guess_extension('text/plain'))
# .bat
Wie SIE dem Beispielcode entnehmen können, gibt believe_extension() nur das erste Element in alphabetischer Reihenfolge zurück, kein besonders repräsentatives.
If ein nicht vorhandener MIME-Typ angegeben WIRD, Werden Eine leere Liste und None zurückgegeben. Natürlich ist es nicht erlaubt, wenn es auch nur geringfügig anders ist.
print(mimetypes.guess_all_extensions('image/jpg'))
# []
print(mimetypes.guess_extension('image/jpg'))
# None
Das Attribut types_map enthält ein Wörterbuch, dessen Schlüsselerweiterungen und dessen Werte MIME-Typen sind.
Das mimetypes-Modul stellt init() bereit, um types_map zu initialisieren. Wenn eine Funktion wie etwa rate_type() aufgerufen WIRD, WIRD init() automatisch ausgeführt und types_map WIRD durch die Standarddatei des Systems aktualisiert. Andernfalls enthält die types_map nur die eingebauten Werte.
Ob init() ausgeführt wurde oder nicht, kann durch das inited-Attribut überprüft werden.
if not mimetypes.inited:
mimetypes.init()
print(type(mimetypes.types_map))
# <class 'dict'>
print(len(mimetypes.types_map))
# 1013
print(mimetypes.types_map['.jpg'])
# image/jpeg
Dieses Ergebnis wurde auf macOS Mojave ausgeführt und das Wörterbuch enthält 1013 Elemente. Unter Windows 10 betrug die Anzahl der Elemente 272 und unter Ubuntu 18.04 564.
Beachten Sie, dass die in types_map übereinstimmenden Erweiterungen und MIME-Typen je nach Umgebung unterschiedlich sind. Beispielsweise war Markdown (.md/text/markdown) nur in Ubuntu in meiner Umgebung enthalten. Auch Funktionen wie etwa rate_type() werden auf der Grundlage von types_map verarbeitet, sodass die Ergebnisse abweichen können.
Sie können eine Liste der Erweiterungen und ihrer MIME-Typen anzeigen, ohne dass Sie types_map drucken. Hier wird Druck verwendet, um es besser sichtbar zu machen.
pprint.pprint(mimetypes.types_map)
# {'.123': 'application/vnd.lotus-1-2-3',
# '.3dml': 'text/vnd.in3d.3dml',
# '.3ds': 'image/x-3ds',
# '.3g2': 'video/3gpp2',
# '.3gp': 'video/3gpp',
# '.7z': 'application/x-7z-compressed',
# '.a': 'application/octet-stream',
# '.aab': 'application/x-authorware-bin',
# '.aac': 'audio/x-aac',
# '.aam': 'application/x-authorware-map',
# '.aas': 'application/x-authorware-seg',
# '.abw': 'application/x-abiword',
# '.ac': 'application/pkix-attr-cert',
# '.acc': 'application/vnd.americandynamics.acc',
# '.ace': 'application/x-ace-compressed',
# '.acu': 'application/vnd.acucobol',
# '.acutc': 'application/vnd.acucorp',
# '.adp': 'audio/adpcm',
# '.aep': 'application/vnd.audiograph',
# '.afm': 'application/x-font-type1',
# '.afp': 'application/vnd.ibm.modcap',
# '.ahead': 'application/vnd.ahead.space',
# '.ai': 'application/postscript',
# '.aif': 'audio/x-aiff',
# '.aifc': 'audio/x-aiff',
# '.aiff': 'audio/x-aiff',
# '.air': 'application/vnd.adobe.air-application-installer-package+zip',
# '.ait': 'application/vnd.dvb.ait',
# '.ami': 'application/vnd.amiga.ami',
# '.apk': 'application/vnd.android.package-archive',
# '.appcache': 'text/cache-manifest',
# '.application': 'application/x-ms-application',
# '.apr': 'application/vnd.lotus-approach',
# '.arc': 'application/x-freearc',
# '.asc': 'application/pgp-signature',
# '.asf': 'video/x-ms-asf',
# '.asm': 'text/x-asm',
# '.aso': 'application/vnd.accpac.simply.aso',
# '.asx': 'video/x-ms-asf',
# '.atc': 'application/vnd.acucorp',
# '.atom': 'application/atom+xml',
# '.atomcat': 'application/atomcat+xml',
# '.atomsvc': 'application/atomsvc+xml',
# '.atx': 'application/vnd.antix.game-component',
# '.au': 'audio/basic',
# '.avi': 'video/x-msvideo',
# '.aw': 'application/applixware',
# '.azf': 'application/vnd.airzip.filesecure.azf',
# '.azs': 'application/vnd.airzip.filesecure.azs',
# '.azw': 'application/vnd.amazon.ebook',
# '.bat': 'application/x-msdownload',
# '.bcpio': 'application/x-bcpio',
# '.bdf': 'application/x-font-bdf',
# '.bdm': 'application/vnd.syncml.dm+wbxml',
# '.bed': 'application/vnd.realvnc.bed',
# '.bh2': 'application/vnd.fujitsu.oasysprs',
# '.bin': 'application/octet-stream',
# '.blb': 'application/x-blorb',
# '.blorb': 'application/x-blorb',
# '.bmi': 'application/vnd.bmi',
# '.bmp': 'image/bmp',
# '.book': 'application/vnd.framemaker',
# '.box': 'application/vnd.previewsystems.box',
# '.boz': 'application/x-bzip2',
# '.bpk': 'application/octet-stream',
# '.btif': 'image/prs.btif',
# '.bz': 'application/x-bzip',
# '.bz2': 'application/x-bzip2',
# '.c': 'text/x-c',
# '.c11amc': 'application/vnd.cluetrust.cartomobile-config',
# '.c11amz': 'application/vnd.cluetrust.cartomobile-config-pkg',
# '.c4d': 'application/vnd.clonk.c4group',
# '.c4f': 'application/vnd.clonk.c4group',
# '.c4g': 'application/vnd.clonk.c4group',
# '.c4p': 'application/vnd.clonk.c4group',
# '.c4u': 'application/vnd.clonk.c4group',
# '.cab': 'application/vnd.ms-cab-compressed',
# '.caf': 'audio/x-caf',
# '.cap': 'application/vnd.tcpdump.pcap',
# '.car': 'application/vnd.curl.car',
# '.cat': 'application/vnd.ms-pki.seccat',
# '.cb7': 'application/x-cbr',
# '.cba': 'application/x-cbr',
# '.cbr': 'application/x-cbr',
# '.cbt': 'application/x-cbr',
# '.cbz': 'application/x-cbr',
# '.cc': 'text/x-c',
# '.cct': 'application/x-director',
# '.ccxml': 'application/ccxml+xml',
# '.cdbcmsg': 'application/vnd.contact.cmsg',
# '.cdf': 'application/x-netcdf',
# '.cdkey': 'application/vnd.mediastation.cdkey',
# '.cdmia': 'application/cdmi-capability',
# '.cdmic': 'application/cdmi-container',
# '.cdmid': 'application/cdmi-domain',
# '.cdmio': 'application/cdmi-object',
# '.cdmiq': 'application/cdmi-queue',
# '.cdx': 'chemical/x-cdx',
# '.cdxml': 'application/vnd.chemdraw+xml',
# '.cdy': 'application/vnd.cinderella',
# '.cer': 'application/pkix-cert',
# '.cfs': 'application/x-cfs-compressed',
# '.cgm': 'image/cgm',
# '.chat': 'application/x-chat',
# '.chm': 'application/vnd.ms-htmlhelp',
# '.chrt': 'application/vnd.kde.kchart',
# '.cif': 'chemical/x-cif',
# '.cii': 'application/vnd.anser-web-certificate-issue-initiation',
# '.cil': 'application/vnd.ms-artgalry',
# '.cla': 'application/vnd.claymore',
# '.class': 'application/java-vm',
# '.clkk': 'application/vnd.crick.clicker.keyboard',
# '.clkp': 'application/vnd.crick.clicker.palette',
# '.clkt': 'application/vnd.crick.clicker.template',
# '.clkw': 'application/vnd.crick.clicker.wordbank',
# '.clkx': 'application/vnd.crick.clicker',
# '.clp': 'application/x-msclip',
# '.cmc': 'application/vnd.cosmocaller',
# '.cmdf': 'chemical/x-cmdf',
# '.cml': 'chemical/x-cml',
# '.cmp': 'application/vnd.yellowriver-custom-menu',
# '.cmx': 'image/x-cmx',
# '.cod': 'application/vnd.rim.cod',
# '.com': 'application/x-msdownload',
# '.conf': 'text/plain',
# '.cpio': 'application/x-cpio',
# '.cpp': 'text/x-c',
# '.cpt': 'application/mac-compactpro',
# '.crd': 'application/x-mscardfile',
# '.crl': 'application/pkix-crl',
# '.crt': 'application/x-x509-ca-cert',
# '.cryptonote': 'application/vnd.rig.cryptonote',
# '.csh': 'application/x-csh',
# '.csml': 'chemical/x-csml',
# '.csp': 'application/vnd.commonspace',
# '.css': 'text/css',
# '.cst': 'application/x-director',
# '.csv': 'text/csv',
# '.cu': 'application/cu-seeme',
# '.curl': 'text/vnd.curl',
# '.cww': 'application/prs.cww',
# '.cxt': 'application/x-director',
# '.cxx': 'text/x-c',
# '.dae': 'model/vnd.collada+xml',
# '.daf': 'application/vnd.mobius.daf',
# '.dart': 'application/vnd.dart',
# '.dataless': 'application/vnd.fdsn.seed',
# '.davmount': 'application/davmount+xml',
# '.dbk': 'application/docbook+xml',
# '.dcr': 'application/x-director',
# '.dcurl': 'text/vnd.curl.dcurl',
# '.dd2': 'application/vnd.oma.dd2+xml',
# '.ddd': 'application/vnd.fujixerox.ddd',
# '.deb': 'application/x-debian-package',
# '.def': 'text/plain',
# '.deploy': 'application/octet-stream',
# '.der': 'application/x-x509-ca-cert',
# '.dfac': 'application/vnd.dreamfactory',
# '.dgc': 'application/x-dgc-compressed',
# '.dic': 'text/x-c',
# '.dif': 'video/x-dv',
# '.dir': 'application/x-director',
# '.dis': 'application/vnd.mobius.dis',
# '.dist': 'application/octet-stream',
# '.distz': 'application/octet-stream',
# '.djv': 'image/vnd.djvu',
# '.djvu': 'image/vnd.djvu',
# '.dll': 'application/x-msdownload',
# '.dmg': 'application/x-apple-diskimage',
# '.dmp': 'application/vnd.tcpdump.pcap',
# '.dms': 'application/octet-stream',
# '.dna': 'application/vnd.dna',
# '.doc': 'application/msword',
# '.docm': 'application/vnd.ms-word.document.macroenabled.12',
# '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
# '.dot': 'application/msword',
# '.dotm': 'application/vnd.ms-word.template.macroenabled.12',
# '.dotx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
# '.dp': 'application/vnd.osgi.dp',
# '.dpg': 'application/vnd.dpgraph',
# '.dra': 'audio/vnd.dra',
# '.dsc': 'text/prs.lines.tag',
# '.dssc': 'application/dssc+der',
# '.dtb': 'application/x-dtbook+xml',
# '.dtd': 'application/xml-dtd',
# '.dts': 'audio/vnd.dts',
# '.dtshd': 'audio/vnd.dts.hd',
# '.dump': 'application/octet-stream',
# '.dv': 'video/x-dv',
# '.dvb': 'video/vnd.dvb.file',
# '.dvi': 'application/x-dvi',
# '.dwf': 'model/vnd.dwf',
# '.dwg': 'image/vnd.dwg',
# '.dxf': 'image/vnd.dxf',
# '.dxp': 'application/vnd.spotfire.dxp',
# '.dxr': 'application/x-director',
# '.ecelp4800': 'audio/vnd.nuera.ecelp4800',
# '.ecelp7470': 'audio/vnd.nuera.ecelp7470',
# '.ecelp9600': 'audio/vnd.nuera.ecelp9600',
# '.ecma': 'application/ecmascript',
# '.edm': 'application/vnd.novadigm.edm',
# '.edx': 'application/vnd.novadigm.edx',
# '.efif': 'application/vnd.picsel',
# '.ei6': 'application/vnd.pg.osasli',
# '.elc': 'application/octet-stream',
# '.emf': 'application/x-msmetafile',
# '.eml': 'message/rfc822',
# '.emma': 'application/emma+xml',
# '.emz': 'application/x-msmetafile',
# '.eol': 'audio/vnd.digital-winds',
# '.eot': 'application/vnd.ms-fontobject',
# '.eps': 'application/postscript',
# '.epub': 'application/epub+zip',
# '.es3': 'application/vnd.eszigno3+xml',
# '.esa': 'application/vnd.osgi.subsystem',
# '.esf': 'application/vnd.epson.esf',
# '.et3': 'application/vnd.eszigno3+xml',
# '.etx': 'text/x-setext',
# '.eva': 'application/x-eva',
# '.evy': 'application/x-envoy',
# '.exe': 'application/x-msdownload',
# '.exi': 'application/exi',
# '.ext': 'application/vnd.novadigm.ext',
# '.ez': 'application/andrew-inset',
# '.ez2': 'application/vnd.ezpix-album',
# '.ez3': 'application/vnd.ezpix-package',
# '.f': 'text/x-fortran',
# '.f4v': 'video/x-f4v',
# '.f77': 'text/x-fortran',
# '.f90': 'text/x-fortran',
# '.fbs': 'image/vnd.fastbidsheet',
# '.fcdt': 'application/vnd.adobe.formscentral.fcdt',
# '.fcs': 'application/vnd.isac.fcs',
# '.fdf': 'application/vnd.fdf',
# '.fe_launch': 'application/vnd.denovo.fcselayout-link',
# '.fg5': 'application/vnd.fujitsu.oasysgp',
# '.fgd': 'application/x-director',
# '.fh': 'image/x-freehand',
# '.fh4': 'image/x-freehand',
# '.fh5': 'image/x-freehand',
# '.fh7': 'image/x-freehand',
# '.fhc': 'image/x-freehand',
# '.fig': 'application/x-xfig',
# '.flac': 'audio/x-flac',
# '.fli': 'video/x-fli',
# '.flo': 'application/vnd.micrografx.flo',
# '.flv': 'video/x-flv',
# '.flw': 'application/vnd.kde.kivio',
# '.flx': 'text/vnd.fmi.flexstor',
# '.fly': 'text/vnd.fly',
# '.fm': 'application/vnd.framemaker',
# '.fnc': 'application/vnd.frogans.fnc',
# '.for': 'text/x-fortran',
# '.fpx': 'image/vnd.fpx',
# '.frame': 'application/vnd.framemaker',
# '.fsc': 'application/vnd.fsc.weblaunch',
# '.fst': 'image/vnd.fst',
# '.ftc': 'application/vnd.fluxtime.clip',
# '.fti': 'application/vnd.anser-web-funds-transfer-initiation',
# '.fvt': 'video/vnd.fvt',
# '.fxp': 'application/vnd.adobe.fxp',
# '.fxpl': 'application/vnd.adobe.fxp',
# '.fzs': 'application/vnd.fuzzysheet',
# '.g2w': 'application/vnd.geoplan',
# '.g3': 'image/g3fax',
# '.g3w': 'application/vnd.geospace',
# '.gac': 'application/vnd.groove-account',
# '.gam': 'application/x-tads',
# '.gbr': 'application/rpki-ghostbusters',
# '.gca': 'application/x-gca-compressed',
# '.gdl': 'model/vnd.gdl',
# '.geo': 'application/vnd.dynageo',
# '.gex': 'application/vnd.geometry-explorer',
# '.ggb': 'application/vnd.geogebra.file',
# '.ggt': 'application/vnd.geogebra.tool',
# '.ghf': 'application/vnd.groove-help',
# '.gif': 'image/gif',
# '.gim': 'application/vnd.groove-identity-message',
# '.gml': 'application/gml+xml',
# '.gmx': 'application/vnd.gmx',
# '.gnumeric': 'application/x-gnumeric',
# '.gph': 'application/vnd.flographit',
# '.gpx': 'application/gpx+xml',
# '.gqf': 'application/vnd.grafeq',
# '.gqs': 'application/vnd.grafeq',
# '.gram': 'application/srgs',
# '.gramps': 'application/x-gramps-xml',
# '.gre': 'application/vnd.geometry-explorer',
# '.grv': 'application/vnd.groove-injector',
# '.grxml': 'application/srgs+xml',
# '.gsf': 'application/x-font-ghostscript',
# '.gtar': 'application/x-gtar',
# '.gtm': 'application/vnd.groove-tool-message',
# '.gtw': 'model/vnd.gtw',
# '.gv': 'text/vnd.graphviz',
# '.gxf': 'application/gxf',
# '.gxt': 'application/vnd.geonext',
# '.h': 'text/x-c',
# '.h261': 'video/h261',
# '.h263': 'video/h263',
# '.h264': 'video/h264',
# '.hal': 'application/vnd.hal+xml',
# '.hbci': 'application/vnd.hbci',
# '.hdf': 'application/x-hdf',
# '.hh': 'text/x-c',
# '.hlp': 'application/winhlp',
# '.hpgl': 'application/vnd.hp-hpgl',
# '.hpid': 'application/vnd.hp-hpid',
# '.hps': 'application/vnd.hp-hps',
# '.hqx': 'application/mac-binhex40',
# '.htke': 'application/vnd.kenameaapp',
# '.htm': 'text/html',
# '.html': 'text/html',
# '.hvd': 'application/vnd.yamaha.hv-dic',
# '.hvp': 'application/vnd.yamaha.hv-voice',
# '.hvs': 'application/vnd.yamaha.hv-script',
# '.i2g': 'application/vnd.intergeo',
# '.icc': 'application/vnd.iccprofile',
# '.ice': 'x-conference/x-cooltalk',
# '.icm': 'application/vnd.iccprofile',
# '.ico': 'image/x-icon',
# '.ics': 'text/calendar',
# '.ief': 'image/ief',
# '.ifb': 'text/calendar',
# '.ifm': 'application/vnd.shana.informed.formdata',
# '.iges': 'model/iges',
# '.igl': 'application/vnd.igloader',
# '.igm': 'application/vnd.insors.igm',
# '.igs': 'model/iges',
# '.igx': 'application/vnd.micrografx.igx',
# '.iif': 'application/vnd.shana.informed.interchange',
# '.imp': 'application/vnd.accpac.simply.imp',
# '.ims': 'application/vnd.ms-ims',
# '.in': 'text/plain',
# '.ink': 'application/inkml+xml',
# '.inkml': 'application/inkml+xml',
# '.install': 'application/x-install-instructions',
# '.iota': 'application/vnd.astraea-software.iota',
# '.ipfix': 'application/ipfix',
# '.ipk': 'application/vnd.shana.informed.package',
# '.irm': 'application/vnd.ibm.rights-management',
# '.irp': 'application/vnd.irepository.package+xml',
# '.iso': 'application/x-iso9660-image',
# '.itp': 'application/vnd.shana.informed.formtemplate',
# '.ivp': 'application/vnd.immervision-ivp',
# '.ivu': 'application/vnd.immervision-ivu',
# '.jad': 'text/vnd.sun.j2me.app-descriptor',
# '.jam': 'application/vnd.jam',
# '.jar': 'application/java-archive',
# '.java': 'text/x-java-source',
# '.jisp': 'application/vnd.jisp',
# '.jlt': 'application/vnd.hp-jlyt',
# '.jnlp': 'application/x-java-jnlp-file',
# '.joda': 'application/vnd.joost.joda-archive',
# '.jp2': 'image/jp2',
# '.jpe': 'image/jpeg',
# '.jpeg': 'image/jpeg',
# '.jpg': 'image/jpeg',
# '.jpgm': 'video/jpm',
# '.jpgv': 'video/jpeg',
# '.jpm': 'video/jpm',
# '.js': 'application/javascript',
# '.json': 'application/json',
# '.jsonml': 'application/jsonml+json',
# '.kar': 'audio/midi',
# '.karbon': 'application/vnd.kde.karbon',
# '.kfo': 'application/vnd.kde.kformula',
# '.kia': 'application/vnd.kidspiration',
# '.kml': 'application/vnd.google-earth.kml+xml',
# '.kmz': 'application/vnd.google-earth.kmz',
# '.kne': 'application/vnd.kinar',
# '.knp': 'application/vnd.kinar',
# '.kon': 'application/vnd.kde.kontour',
# '.kpr': 'application/vnd.kde.kpresenter',
# '.kpt': 'application/vnd.kde.kpresenter',
# '.kpxx': 'application/vnd.ds-keypoint',
# '.ksh': 'text/plain',
# '.ksp': 'application/vnd.kde.kspread',
# '.ktr': 'application/vnd.kahootz',
# '.ktx': 'image/ktx',
# '.ktz': 'application/vnd.kahootz',
# '.kwd': 'application/vnd.kde.kword',
# '.kwt': 'application/vnd.kde.kword',
# '.lasxml': 'application/vnd.las.las+xml',
# '.latex': 'application/x-latex',
# '.lbd': 'application/vnd.llamagraphics.life-balance.desktop',
# '.lbe': 'application/vnd.llamagraphics.life-balance.exchange+xml',
# '.les': 'application/vnd.hhe.lesson-player',
# '.lha': 'application/x-lzh-compressed',
# '.link66': 'application/vnd.route66.link66+xml',
# '.list': 'text/plain',
# '.list3820': 'application/vnd.ibm.modcap',
# '.listafp': 'application/vnd.ibm.modcap',
# '.lnk': 'application/x-ms-shortcut',
# '.log': 'text/plain',
# '.lostxml': 'application/lost+xml',
# '.lrf': 'application/octet-stream',
# '.lrm': 'application/vnd.ms-lrm',
# '.ltf': 'application/vnd.frogans.ltf',
# '.lvp': 'audio/vnd.lucent.voice',
# '.lwp': 'application/vnd.lotus-wordpro',
# '.lzh': 'application/x-lzh-compressed',
# '.m13': 'application/x-msmediaview',
# '.m14': 'application/x-msmediaview',
# '.m1v': 'video/mpeg',
# '.m21': 'application/mp21',
# '.m2a': 'audio/mpeg',
# '.m2v': 'video/mpeg',
# '.m3a': 'audio/mpeg',
# '.m3u': 'audio/x-mpegurl',
# '.m3u8': 'application/x-mpegurl',
# '.m4a': 'audio/mp4a-latm',
# '.m4p': 'audio/mp4a-latm',
# '.m4u': 'video/vnd.mpegurl',
# '.m4v': 'video/x-m4v',
# '.ma': 'application/mathematica',
# '.mac': 'image/x-macpaint',
# '.mads': 'application/mads+xml',
# '.mag': 'application/vnd.ecowin.chart',
# '.maker': 'application/vnd.framemaker',
# '.man': 'text/troff',
# '.manifest': 'text/cache-manifest',
# '.mar': 'application/octet-stream',
# '.mathml': 'application/mathml+xml',
# '.mb': 'application/mathematica',
# '.mbk': 'application/vnd.mobius.mbk',
# '.mbox': 'application/mbox',
# '.mc1': 'application/vnd.medcalcdata',
# '.mcd': 'application/vnd.mcd',
# '.mcurl': 'text/vnd.curl.mcurl',
# '.mdb': 'application/x-msaccess',
# '.mdi': 'image/vnd.ms-modi',
# '.me': 'text/troff',
# '.mesh': 'model/mesh',
# '.meta4': 'application/metalink4+xml',
# '.metalink': 'application/metalink+xml',
# '.mets': 'application/mets+xml',
# '.mfm': 'application/vnd.mfmp',
# '.mft': 'application/rpki-manifest',
# '.mgp': 'application/vnd.osgeo.mapguide.package',
# '.mgz': 'application/vnd.proteus.magazine',
# '.mht': 'message/rfc822',
# '.mhtml': 'message/rfc822',
# '.mid': 'audio/midi',
# '.midi': 'audio/midi',
# '.mie': 'application/x-mie',
# '.mif': 'application/vnd.mif',
# '.mime': 'message/rfc822',
# '.mj2': 'video/mj2',
# '.mjp2': 'video/mj2',
# '.mjs': 'application/javascript',
# '.mk3d': 'video/x-matroska',
# '.mka': 'audio/x-matroska',
# '.mks': 'video/x-matroska',
# '.mkv': 'video/x-matroska',
# '.mlp': 'application/vnd.dolby.mlp',
# '.mmd': 'application/vnd.chipnuts.karaoke-mmd',
# '.mmf': 'application/vnd.smaf',
# '.mmr': 'image/vnd.fujixerox.edmics-mmr',
# '.mng': 'video/x-mng',
# '.mny': 'application/x-msmoney',
# '.mobi': 'application/x-mobipocket-ebook',
# '.mobipocket-ebook': 'application/octet-stream',
# '.mods': 'application/mods+xml',
# '.mov': 'video/quicktime',
# '.movie': 'video/x-sgi-movie',
# '.mp2': 'audio/mpeg',
# '.mp21': 'application/mp21',
# '.mp2a': 'audio/mpeg',
# '.mp3': 'audio/mpeg',
# '.mp4': 'video/mp4',
# '.mp4a': 'audio/mp4',
# '.mp4s': 'application/mp4',
# '.mp4v': 'video/mp4',
# '.mpa': 'video/mpeg',
# '.mpc': 'application/vnd.mophun.certificate',
# '.mpe': 'video/mpeg',
# '.mpeg': 'video/mpeg',
# '.mpg': 'video/mpeg',
# '.mpg4': 'video/mp4',
# '.mpga': 'audio/mpeg',
# '.mpkg': 'application/vnd.apple.installer+xml',
# '.mpm': 'application/vnd.blueice.multipass',
# '.mpn': 'application/vnd.mophun.application',
# '.mpp': 'application/vnd.ms-project',
# '.mpt': 'application/vnd.ms-project',
# '.mpy': 'application/vnd.ibm.minipay',
# '.mqy': 'application/vnd.mobius.mqy',
# '.mrc': 'application/marc',
# '.mrcx': 'application/marcxml+xml',
# '.ms': 'text/troff',
# '.mscml': 'application/mediaservercontrol+xml',
# '.mseed': 'application/vnd.fdsn.mseed',
# '.mseq': 'application/vnd.mseq',
# '.msf': 'application/vnd.epson.msf',
# '.msh': 'model/mesh',
# '.msi': 'application/x-msdownload',
# '.msl': 'application/vnd.mobius.msl',
# '.msty': 'application/vnd.muvee.style',
# '.mts': 'model/vnd.mts',
# '.mus': 'application/vnd.musician',
# '.musicxml': 'application/vnd.recordare.musicxml+xml',
# '.mvb': 'application/x-msmediaview',
# '.mwf': 'application/vnd.mfer',
# '.mxf': 'application/mxf',
# '.mxl': 'application/vnd.recordare.musicxml',
# '.mxml': 'application/xv+xml',
# '.mxs': 'application/vnd.triscape.mxs',
# '.mxu': 'video/vnd.mpegurl',
# '.n-gage': 'application/vnd.nokia.n-gage.symbian.install',
# '.n3': 'text/n3',
# '.nb': 'application/mathematica',
# '.nbp': 'application/vnd.wolfram.player',
# '.nc': 'application/x-netcdf',
# '.ncx': 'application/x-dtbncx+xml',
# '.nfo': 'text/x-nfo',
# '.ngdat': 'application/vnd.nokia.n-gage.data',
# '.nitf': 'application/vnd.nitf',
# '.nlu': 'application/vnd.neurolanguage.nlu',
# '.nml': 'application/vnd.enliven',
# '.nnd': 'application/vnd.noblenet-directory',
# '.nns': 'application/vnd.noblenet-sealer',
# '.nnw': 'application/vnd.noblenet-web',
# '.npx': 'image/vnd.net-fpx',
# '.nsc': 'application/x-conference',
# '.nsf': 'application/vnd.lotus-notes',
# '.ntf': 'application/vnd.nitf',
# '.nws': 'message/rfc822',
# '.nzb': 'application/x-nzb',
# '.o': 'application/octet-stream',
# '.oa2': 'application/vnd.fujitsu.oasys2',
# '.oa3': 'application/vnd.fujitsu.oasys3',
# '.oas': 'application/vnd.fujitsu.oasys',
# '.obd': 'application/x-msbinder',
# '.obj': 'application/x-tgif',
# '.oda': 'application/oda',
# '.odb': 'application/vnd.oasis.opendocument.database',
# '.odc': 'application/vnd.oasis.opendocument.chart',
# '.odf': 'application/vnd.oasis.opendocument.formula',
# '.odft': 'application/vnd.oasis.opendocument.formula-template',
# '.odg': 'application/vnd.oasis.opendocument.graphics',
# '.odi': 'application/vnd.oasis.opendocument.image',
# '.odm': 'application/vnd.oasis.opendocument.text-master',
# '.odp': 'application/vnd.oasis.opendocument.presentation',
# '.ods': 'application/vnd.oasis.opendocument.spreadsheet',
# '.odt': 'application/vnd.oasis.opendocument.text',
# '.oga': 'audio/ogg',
# '.ogg': 'audio/ogg',
# '.ogv': 'video/ogg',
# '.ogx': 'application/ogg',
# '.omdoc': 'application/omdoc+xml',
# '.onepkg': 'application/onenote',
# '.onetmp': 'application/onenote',
# '.onetoc': 'application/onenote',
# '.onetoc2': 'application/onenote',
# '.opf': 'application/oebps-package+xml',
# '.opml': 'text/x-opml',
# '.oprc': 'application/vnd.palm',
# '.org': 'application/vnd.lotus-organizer',
# '.osf': 'application/vnd.yamaha.openscoreformat',
# '.osfpvg': 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
# '.otc': 'application/vnd.oasis.opendocument.chart-template',
# '.otf': 'font/otf',
# '.otg': 'application/vnd.oasis.opendocument.graphics-template',
# '.oth': 'application/vnd.oasis.opendocument.text-web',
# '.oti': 'application/vnd.oasis.opendocument.image-template',
# '.otp': 'application/vnd.oasis.opendocument.presentation-template',
# '.ots': 'application/vnd.oasis.opendocument.spreadsheet-template',
# '.ott': 'application/vnd.oasis.opendocument.text-template',
# '.oxps': 'application/oxps',
# '.oxt': 'application/vnd.openofficeorg.extension',
# '.p': 'text/x-pascal',
# '.p10': 'application/pkcs10',
# '.p12': 'application/x-pkcs12',
# '.p7b': 'application/x-pkcs7-certificates',
# '.p7c': 'application/pkcs7-mime',
# '.p7m': 'application/pkcs7-mime',
# '.p7r': 'application/x-pkcs7-certreqresp',
# '.p7s': 'application/pkcs7-signature',
# '.p8': 'application/pkcs8',
# '.pas': 'text/x-pascal',
# '.paw': 'application/vnd.pawaafile',
# '.pbd': 'application/vnd.powerbuilder6',
# '.pbm': 'image/x-portable-bitmap',
# '.pcap': 'application/vnd.tcpdump.pcap',
# '.pcf': 'application/x-font-pcf',
# '.pcl': 'application/vnd.hp-pcl',
# '.pclxl': 'application/vnd.hp-pclxl',
# '.pct': 'image/x-pict',
# '.pcurl': 'application/vnd.curl.pcurl',
# '.pcx': 'image/x-pcx',
# '.pdb': 'application/vnd.palm',
# '.pdf': 'application/pdf',
# '.pfa': 'application/x-font-type1',
# '.pfb': 'application/x-font-type1',
# '.pfm': 'application/x-font-type1',
# '.pfr': 'application/font-tdpfr',
# '.pfx': 'application/x-pkcs12',
# '.pgm': 'image/x-portable-graymap',
# '.pgn': 'application/x-chess-pgn',
# '.pgp': 'application/pgp-encrypted',
# '.pic': 'image/x-pict',
# '.pict': 'image/pict',
# '.pkg': 'application/octet-stream',
# '.pki': 'application/pkixcmp',
# '.pkipath': 'application/pkix-pkipath',
# '.pl': 'text/plain',
# '.plb': 'application/vnd.3gpp.pic-bw-large',
# '.plc': 'application/vnd.mobius.plc',
# '.plf': 'application/vnd.pocketlearn',
# '.pls': 'application/pls+xml',
# '.pml': 'application/vnd.ctc-posml',
# '.png': 'image/png',
# '.pnm': 'image/x-portable-anymap',
# '.pnt': 'image/x-macpaint',
# '.pntg': 'image/x-macpaint',
# '.portpkg': 'application/vnd.macports.portpkg',
# '.pot': 'application/vnd.ms-powerpoint',
# '.potm': 'application/vnd.ms-powerpoint.template.macroenabled.12',
# '.potx': 'application/vnd.openxmlformats-officedocument.presentationml.template',
# '.ppa': 'application/vnd.ms-powerpoint',
# '.ppam': 'application/vnd.ms-powerpoint.addin.macroenabled.12',
# '.ppd': 'application/vnd.cups-ppd',
# '.ppm': 'image/x-portable-pixmap',
# '.pps': 'application/vnd.ms-powerpoint',
# '.ppsm': 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
# '.ppsx': 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
# '.ppt': 'application/vnd.ms-powerpoint',
# '.pptm': 'application/vnd.ms-powerpoint.presentation.macroenabled.12',
# '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
# '.pqa': 'application/vnd.palm',
# '.prc': 'application/x-mobipocket-ebook',
# '.pre': 'application/vnd.lotus-freelance',
# '.prf': 'application/pics-rules',
# '.ps': 'application/postscript',
# '.psb': 'application/vnd.3gpp.pic-bw-small',
# '.psd': 'image/vnd.adobe.photoshop',
# '.psf': 'application/x-font-linux-psf',
# '.pskcxml': 'application/pskc+xml',
# '.ptid': 'application/vnd.pvi.ptid1',
# '.pub': 'application/x-mspublisher',
# '.pvb': 'application/vnd.3gpp.pic-bw-var',
# '.pwn': 'application/vnd.3m.post-it-notes',
# '.pwz': 'application/vnd.ms-powerpoint',
# '.py': 'text/x-python',
# '.pya': 'audio/vnd.ms-playready.media.pya',
# '.pyc': 'application/x-python-code',
# '.pyo': 'application/x-python-code',
# '.pyv': 'video/vnd.ms-playready.media.pyv',
# '.qam': 'application/vnd.epson.quickanime',
# '.qbo': 'application/vnd.intu.qbo',
# '.qfx': 'application/vnd.intu.qfx',
# '.qps': 'application/vnd.publishare-delta-tree',
# '.qt': 'video/quicktime',
# '.qti': 'image/x-quicktime',
# '.qtif': 'image/x-quicktime',
# '.qwd': 'application/vnd.quark.quarkxpress',
# '.qwt': 'application/vnd.quark.quarkxpress',
# '.qxb': 'application/vnd.quark.quarkxpress',
# '.qxd': 'application/vnd.quark.quarkxpress',
# '.qxl': 'application/vnd.quark.quarkxpress',
# '.qxt': 'application/vnd.quark.quarkxpress',
# '.ra': 'audio/x-pn-realaudio',
# '.ram': 'audio/x-pn-realaudio',
# '.rar': 'application/x-rar-compressed',
# '.ras': 'image/x-cmu-raster',
# '.rcprofile': 'application/vnd.ipunplugged.rcprofile',
# '.rdf': 'application/rdf+xml',
# '.rdz': 'application/vnd.data-vision.rdz',
# '.rep': 'application/vnd.businessobjects',
# '.res': 'application/x-dtbresource+xml',
# '.rgb': 'image/x-rgb',
# '.rif': 'application/reginfo+xml',
# '.rip': 'audio/vnd.rip',
# '.ris': 'application/x-research-info-systems',
# '.rl': 'application/resource-lists+xml',
# '.rlc': 'image/vnd.fujixerox.edmics-rlc',
# '.rld': 'application/resource-lists-diff+xml',
# '.rm': 'application/vnd.rn-realmedia',
# '.rmi': 'audio/midi',
# '.rmp': 'audio/x-pn-realaudio-plugin',
# '.rms': 'application/vnd.jcp.javame.midlet-rms',
# '.rmvb': 'application/vnd.rn-realmedia-vbr',
# '.rnc': 'application/relax-ng-compact-syntax',
# '.roa': 'application/rpki-roa',
# '.roff': 'text/troff',
# '.rp9': 'application/vnd.cloanto.rp9',
# '.rpss': 'application/vnd.nokia.radio-presets',
# '.rpst': 'application/vnd.nokia.radio-preset',
# '.rq': 'application/sparql-query',
# '.rs': 'application/rls-services+xml',
# '.rsd': 'application/rsd+xml',
# '.rss': 'application/rss+xml',
# '.rtf': 'application/rtf',
# '.rtx': 'text/richtext',
# '.s': 'text/x-asm',
# '.s3m': 'audio/s3m',
# '.saf': 'application/vnd.yamaha.smaf-audio',
# '.sbml': 'application/sbml+xml',
# '.sc': 'application/vnd.ibm.secure-container',
# '.scd': 'application/x-msschedule',
# '.scm': 'application/vnd.lotus-screencam',
# '.scq': 'application/scvp-cv-request',
# '.scs': 'application/scvp-cv-response',
# '.scurl': 'text/vnd.curl.scurl',
# '.sda': 'application/vnd.stardivision.draw',
# '.sdc': 'application/vnd.stardivision.calc',
# '.sdd': 'application/vnd.stardivision.impress',
# '.sdkd': 'application/vnd.solent.sdkm+xml',
# '.sdkm': 'application/vnd.solent.sdkm+xml',
# '.sdp': 'application/sdp',
# '.sdw': 'application/vnd.stardivision.writer',
# '.see': 'application/vnd.seemail',
# '.seed': 'application/vnd.fdsn.seed',
# '.sema': 'application/vnd.sema',
# '.semd': 'application/vnd.semd',
# '.semf': 'application/vnd.semf',
# '.ser': 'application/java-serialized-object',
# '.setpay': 'application/set-payment-initiation',
# '.setreg': 'application/set-registration-initiation',
# '.sfd-hdstx': 'application/vnd.hydrostatix.sof-data',
# '.sfs': 'application/vnd.spotfire.sfs',
# '.sfv': 'text/x-sfv',
# '.sgi': 'image/sgi',
# '.sgl': 'application/vnd.stardivision.writer-global',
# '.sgm': 'text/sgml',
# '.sgml': 'text/sgml',
# '.sh': 'application/x-sh',
# '.shar': 'application/x-shar',
# '.shf': 'application/shf+xml',
# '.sid': 'image/x-mrsid-image',
# '.sig': 'application/pgp-signature',
# '.sil': 'audio/silk',
# '.silo': 'model/mesh',
# '.sis': 'application/vnd.symbian.install',
# '.sisx': 'application/vnd.symbian.install',
# '.sit': 'application/x-stuffit',
# '.sitx': 'application/x-stuffitx',
# '.skd': 'application/vnd.koan',
# '.skm': 'application/vnd.koan',
# '.skp': 'application/vnd.koan',
# '.skt': 'application/vnd.koan',
# '.sldm': 'application/vnd.ms-powerpoint.slide.macroenabled.12',
# '.sldx': 'application/vnd.openxmlformats-officedocument.presentationml.slide',
# '.slt': 'application/vnd.epson.salt',
# '.sm': 'application/vnd.stepmania.stepchart',
# '.smf': 'application/vnd.stardivision.math',
# '.smi': 'application/smil+xml',
# '.smil': 'application/smil+xml',
# '.smv': 'video/x-smv',
# '.smzip': 'application/vnd.stepmania.package',
# '.snd': 'audio/basic',
# '.snf': 'application/x-font-snf',
# '.so': 'application/octet-stream',
# '.spc': 'application/x-pkcs7-certificates',
# '.spf': 'application/vnd.yamaha.smaf-phrase',
# '.spl': 'application/x-futuresplash',
# '.spot': 'text/vnd.in3d.spot',
# '.spp': 'application/scvp-vp-response',
# '.spq': 'application/scvp-vp-request',
# '.spx': 'audio/ogg',
# '.sql': 'application/x-sql',
# '.src': 'application/x-wais-source',
# '.srt': 'application/x-subrip',
# '.sru': 'application/sru+xml',
# '.srx': 'application/sparql-results+xml',
# '.ssdl': 'application/ssdl+xml',
# '.sse': 'application/vnd.kodak-descriptor',
# '.ssf': 'application/vnd.epson.ssf',
# '.ssml': 'application/ssml+xml',
# '.st': 'application/vnd.sailingtracker.track',
# '.stc': 'application/vnd.sun.xml.calc.template',
# '.std': 'application/vnd.sun.xml.draw.template',
# '.stf': 'application/vnd.wt.stf',
# '.sti': 'application/vnd.sun.xml.impress.template',
# '.stk': 'application/hyperstudio',
# '.stl': 'application/vnd.ms-pki.stl',
# '.str': 'application/vnd.pg.format',
# '.stw': 'application/vnd.sun.xml.writer.template',
# '.sub': 'text/vnd.dvb.subtitle',
# '.sus': 'application/vnd.sus-calendar',
# '.susp': 'application/vnd.sus-calendar',
# '.sv4cpio': 'application/x-sv4cpio',
# '.sv4crc': 'application/x-sv4crc',
# '.svc': 'application/vnd.dvb.service',
# '.svd': 'application/vnd.svd',
# '.svg': 'image/svg+xml',
# '.svgz': 'image/svg+xml',
# '.swa': 'application/x-director',
# '.swf': 'application/x-shockwave-flash',
# '.swi': 'application/vnd.aristanetworks.swi',
# '.sxc': 'application/vnd.sun.xml.calc',
# '.sxd': 'application/vnd.sun.xml.draw',
# '.sxg': 'application/vnd.sun.xml.writer.global',
# '.sxi': 'application/vnd.sun.xml.impress',
# '.sxm': 'application/vnd.sun.xml.math',
# '.sxw': 'application/vnd.sun.xml.writer',
# '.t': 'text/troff',
# '.t3': 'application/x-t3vm-image',
# '.taglet': 'application/vnd.mynfc',
# '.tao': 'application/vnd.tao.intent-module-archive',
# '.tar': 'application/x-tar',
# '.tcap': 'application/vnd.3gpp2.tcap',
# '.tcl': 'application/x-tcl',
# '.teacher': 'application/vnd.smart.teacher',
# '.tei': 'application/tei+xml',
# '.teicorpus': 'application/tei+xml',
# '.tex': 'application/x-tex',
# '.texi': 'application/x-texinfo',
# '.texinfo': 'application/x-texinfo',
# '.text': 'text/plain',
# '.tfi': 'application/thraud+xml',
# '.tfm': 'application/x-tex-tfm',
# '.tga': 'image/x-tga',
# '.thmx': 'application/vnd.ms-officetheme',
# '.tif': 'image/tiff',
# '.tiff': 'image/tiff',
# '.tmo': 'application/vnd.tmobile-livetv',
# '.torrent': 'application/x-bittorrent',
# '.tpl': 'application/vnd.groove-tool-template',
# '.tpt': 'application/vnd.trid.tpt',
# '.tr': 'text/troff',
# '.tra': 'application/vnd.trueapp',
# '.trm': 'application/x-msterminal',
# '.ts': 'video/mp2t',
# '.tsd': 'application/timestamped-data',
# '.tsv': 'text/tab-separated-values',
# '.ttc': 'font/collection',
# '.ttf': 'font/ttf',
# '.ttl': 'text/turtle',
# '.twd': 'application/vnd.simtech-mindmapper',
# '.twds': 'application/vnd.simtech-mindmapper',
# '.txd': 'application/vnd.genomatix.tuxedo',
# '.txf': 'application/vnd.mobius.txf',
# '.txt': 'text/plain',
# '.u32': 'application/x-authorware-bin',
# '.udeb': 'application/x-debian-package',
# '.ufd': 'application/vnd.ufdl',
# '.ufdl': 'application/vnd.ufdl',
# '.ulx': 'application/x-glulx',
# '.umj': 'application/vnd.umajin',
# '.unityweb': 'application/vnd.unity',
# '.uoml': 'application/vnd.uoml+xml',
# '.uri': 'text/uri-list',
# '.uris': 'text/uri-list',
# '.urls': 'text/uri-list',
# '.ustar': 'application/x-ustar',
# '.utz': 'application/vnd.uiq.theme',
# '.uu': 'text/x-uuencode',
# '.uva': 'audio/vnd.dece.audio',
# '.uvd': 'application/vnd.dece.data',
# '.uvf': 'application/vnd.dece.data',
# '.uvg': 'image/vnd.dece.graphic',
# '.uvh': 'video/vnd.dece.hd',
# '.uvi': 'image/vnd.dece.graphic',
# '.uvm': 'video/vnd.dece.mobile',
# '.uvp': 'video/vnd.dece.pd',
# '.uvs': 'video/vnd.dece.sd',
# '.uvt': 'application/vnd.dece.ttml+xml',
# '.uvu': 'video/vnd.uvvu.mp4',
# '.uvv': 'video/vnd.dece.video',
# '.uvva': 'audio/vnd.dece.audio',
# '.uvvd': 'application/vnd.dece.data',
# '.uvvf': 'application/vnd.dece.data',
# '.uvvg': 'image/vnd.dece.graphic',
# '.uvvh': 'video/vnd.dece.hd',
# '.uvvi': 'image/vnd.dece.graphic',
# '.uvvm': 'video/vnd.dece.mobile',
# '.uvvp': 'video/vnd.dece.pd',
# '.uvvs': 'video/vnd.dece.sd',
# '.uvvt': 'application/vnd.dece.ttml+xml',
# '.uvvu': 'video/vnd.uvvu.mp4',
# '.uvvv': 'video/vnd.dece.video',
# '.uvvx': 'application/vnd.dece.unspecified',
# '.uvvz': 'application/vnd.dece.zip',
# '.uvx': 'application/vnd.dece.unspecified',
# '.uvz': 'application/vnd.dece.zip',
# '.vcard': 'text/vcard',
# '.vcd': 'application/x-cdlink',
# '.vcf': 'text/x-vcard',
# '.vcg': 'application/vnd.groove-vcard',
# '.vcs': 'text/x-vcalendar',
# '.vcx': 'application/vnd.vcx',
# '.vis': 'application/vnd.visionary',
# '.viv': 'video/vnd.vivo',
# '.vob': 'video/x-ms-vob',
# '.vor': 'application/vnd.stardivision.writer',
# '.vox': 'application/x-authorware-bin',
# '.vrml': 'model/vrml',
# '.vsd': 'application/vnd.visio',
# '.vsf': 'application/vnd.vsf',
# '.vss': 'application/vnd.visio',
# '.vst': 'application/vnd.visio',
# '.vsw': 'application/vnd.visio',
# '.vtu': 'model/vnd.vtu',
# '.vxml': 'application/voicexml+xml',
# '.w3d': 'application/x-director',
# '.wad': 'application/x-doom',
# '.wav': 'audio/x-wav',
# '.wax': 'audio/x-ms-wax',
# '.wbmp': 'image/vnd.wap.wbmp',
# '.wbs': 'application/vnd.criticaltools.wbs+xml',
# '.wbxml': 'application/vnd.wap.wbxml',
# '.wcm': 'application/vnd.ms-works',
# '.wdb': 'application/vnd.ms-works',
# '.wdp': 'image/vnd.ms-photo',
# '.weba': 'audio/webm',
# '.webm': 'video/webm',
# '.webp': 'image/webp',
# '.wg': 'application/vnd.pmi.widget',
# '.wgt': 'application/widget',
# '.wiz': 'application/msword',
# '.wks': 'application/vnd.ms-works',
# '.wm': 'video/x-ms-wm',
# '.wma': 'audio/x-ms-wma',
# '.wmd': 'application/x-ms-wmd',
# '.wmf': 'application/x-msmetafile',
# '.wml': 'text/vnd.wap.wml',
# '.wmlc': 'application/vnd.wap.wmlc',
# '.wmls': 'text/vnd.wap.wmlscript',
# '.wmlsc': 'application/vnd.wap.wmlscriptc',
# '.wmv': 'video/x-ms-wmv',
# '.wmx': 'video/x-ms-wmx',
# '.wmz': 'application/x-msmetafile',
# '.woff': 'font/woff',
# '.woff2': 'font/woff2',
# '.wpd': 'application/vnd.wordperfect',
# '.wpl': 'application/vnd.ms-wpl',
# '.wps': 'application/vnd.ms-works',
# '.wqd': 'application/vnd.wqd',
# '.wri': 'application/x-mswrite',
# '.wrl': 'model/vrml',
# '.wsdl': 'application/wsdl+xml',
# '.wspolicy': 'application/wspolicy+xml',
# '.wtb': 'application/vnd.webturbo',
# '.wvx': 'video/x-ms-wvx',
# '.x32': 'application/x-authorware-bin',
# '.x3d': 'model/x3d+xml',
# '.x3db': 'model/x3d+binary',
# '.x3dbz': 'model/x3d+binary',
# '.x3dv': 'model/x3d+vrml',
# '.x3dvz': 'model/x3d+vrml',
# '.x3dz': 'model/x3d+xml',
# '.xaml': 'application/xaml+xml',
# '.xap': 'application/x-silverlight-app',
# '.xar': 'application/vnd.xara',
# '.xbap': 'application/x-ms-xbap',
# '.xbd': 'application/vnd.fujixerox.docuworks.binder',
# '.xbm': 'image/x-xbitmap',
# '.xdf': 'application/xcap-diff+xml',
# '.xdm': 'application/vnd.syncml.dm+xml',
# '.xdp': 'application/vnd.adobe.xdp+xml',
# '.xdssc': 'application/dssc+xml',
# '.xdw': 'application/vnd.fujixerox.docuworks',
# '.xenc': 'application/xenc+xml',
# '.xer': 'application/patch-ops-error+xml',
# '.xfdf': 'application/vnd.adobe.xfdf',
# '.xfdl': 'application/vnd.xfdl',
# '.xht': 'application/xhtml+xml',
# '.xhtml': 'application/xhtml+xml',
# '.xhvml': 'application/xv+xml',
# '.xif': 'image/vnd.xiff',
# '.xla': 'application/vnd.ms-excel',
# '.xlam': 'application/vnd.ms-excel.addin.macroenabled.12',
# '.xlb': 'application/vnd.ms-excel',
# '.xlc': 'application/vnd.ms-excel',
# '.xlf': 'application/x-xliff+xml',
# '.xlm': 'application/vnd.ms-excel',
# '.xls': 'application/vnd.ms-excel',
# '.xlsb': 'application/vnd.ms-excel.sheet.binary.macroenabled.12',
# '.xlsm': 'application/vnd.ms-excel.sheet.macroenabled.12',
# '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
# '.xlt': 'application/vnd.ms-excel',
# '.xltm': 'application/vnd.ms-excel.template.macroenabled.12',
# '.xltx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
# '.xlw': 'application/vnd.ms-excel',
# '.xm': 'audio/xm',
# '.xml': 'application/xml',
# '.xo': 'application/vnd.olpc-sugar',
# '.xop': 'application/xop+xml',
# '.xpdl': 'application/xml',
# '.xpi': 'application/x-xpinstall',
# '.xpl': 'application/xproc+xml',
# '.xpm': 'image/x-xpixmap',
# '.xpr': 'application/vnd.is-xpr',
# '.xps': 'application/vnd.ms-xpsdocument',
# '.xpw': 'application/vnd.intercon.formnet',
# '.xpx': 'application/vnd.intercon.formnet',
# '.xsl': 'application/xml',
# '.xslt': 'application/xslt+xml',
# '.xsm': 'application/vnd.syncml+xml',
# '.xspf': 'application/xspf+xml',
# '.xul': 'application/vnd.mozilla.xul+xml',
# '.xvm': 'application/xv+xml',
# '.xvml': 'application/xv+xml',
# '.xwd': 'image/x-xwindowdump',
# '.xyz': 'chemical/x-xyz',
# '.xz': 'application/x-xz',
# '.yang': 'application/yang',
# '.yin': 'application/yin+xml',
# '.z1': 'application/x-zmachine',
# '.z2': 'application/x-zmachine',
# '.z3': 'application/x-zmachine',
# '.z4': 'application/x-zmachine',
# '.z5': 'application/x-zmachine',
# '.z6': 'application/x-zmachine',
# '.z7': 'application/x-zmachine',
# '.z8': 'application/x-zmachine',
# '.zaz': 'application/vnd.zzazz.deck+xml',
# '.zip': 'application/zip',
# '.zir': 'application/vnd.zul',
# '.zirz': 'application/vnd.zul',
# '.zmm': 'application/vnd.handheld-entertainment+xml'}