MIME-Typen anhand der Dateiendung herausfinden

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

MIME-Typen anhand der Dateiendung herausfinden

Beitrag von AND51 »

Hallo!

Habe dies gerade für den Eigenbedarf zusammengebastelt.
Einfach eine Dateiendung wie z. B. "txt" oder "html" übergeben und man erhält den dazugehörigen MIME-Typ.

Die bisherigen MIME-Typen stammen von SelfHTML.org. Bitte den Code erweitern, wenn ihr noch mehr MIME-Typen habt!

Code: Alles auswählen

Structure mimetype_structure
	mime.s
	ext.s
EndStructure
NewList mime.mimetype_structure()
Macro AddMimeType(mimetype, extension)
	AddElement(mime())
		mime()\mime=mimetype
		mime()\ext=extension
EndMacro

AddMimeType("application/acad", "dwg")
AddMimeType("application/astound", "asd asn")
AddMimeType("application/dsptype", "tsp")
AddMimeType("application/dxf", "dxf")
AddMimeType("application/futuresplash", "spl")
AddMimeType("application/gzip", "gz")
AddMimeType("application/listenup", "ptlk")
AddMimeType("application/mac-binhex40", "hqx")
AddMimeType("application/mbedlet", "mbd")
AddMimeType("application/mif", "mif")
AddMimeType("application/msexcel", "xls xla")
AddMimeType("application/mshelp", "hlp chm")
AddMimeType("application/mspowerpoint", "ppt ppz pps pot")
AddMimeType("application/msword", "doc dot")
AddMimeType("application/octet-stream", "bin exe com dll class")
AddMimeType("application/oda", "oda")
AddMimeType("application/pdf", "pdf")
AddMimeType("application/postscript", "ai eps ps")
AddMimeType("application/rtc", "rtc")
AddMimeType("application/rtf", "rtf")
AddMimeType("application/studiom", "smp")
AddMimeType("application/toolbook", "tbk")
AddMimeType("application/vnd.wap.wmlc", "wmlc")
AddMimeType("application/vnd.wap.wmlscriptc", "wmlsc")
AddMimeType("application/vocaltec-media-desc", "vmd")
AddMimeType("application/vocaltec-media-file", "vmf")
AddMimeType("application/x-bcpio", "bcpio")
AddMimeType("application/x-compress", "z")
AddMimeType("application/x-cpio", "cpio")
AddMimeType("application/x-csh", "csh")
AddMimeType("application/x-director", "dcr dir dxr")
AddMimeType("application/x-dvi", "dvi")
AddMimeType("application/x-envoy", "evy")
AddMimeType("application/x-gtar", "gtar")
AddMimeType("application/x-hdf", "hdf")
AddMimeType("application/x-latex", "latex")
AddMimeType("application/x-macbinary", "bin")
AddMimeType("application/x-mif", "mif")
AddMimeType("application/xml", "xml")
AddMimeType("application/x-netcdf", "nc cdf")
AddMimeType("application/x-nschat", "nsc")
AddMimeType("application/x-sh", "sh")
AddMimeType("application/x-shar", "shar")
AddMimeType("application/x-shockwave-flash", "swf cab")
AddMimeType("application/x-sprite", "spr sprite")
AddMimeType("application/x-stuffit", "sit")
AddMimeType("application/x-supercard", "sca")
AddMimeType("application/x-sv4cpio", "sv4cpio")
AddMimeType("application/x-sv4crc", "sv4crc")
AddMimeType("application/x-tar", "tar")
AddMimeType("application/x-tcl", "tcl")
AddMimeType("application/x-tex", "tex")
AddMimeType("application/x-texinfo", "texinfo texi")
AddMimeType("application/x-troff", "t tr roff")
AddMimeType("application/x-troff-man", "man troff")
AddMimeType("application/x-troff-me", "me troff")
AddMimeType("application/x-troff-ms", "me troff")
AddMimeType("application/x-ustar", "ustar")
AddMimeType("application/x-wais-source", "src")
AddMimeType("application/zip", "zip")
AddMimeType("audio/basic", "au snd")
AddMimeType("audio/echospeech", "es")
AddMimeType("audio/tsplayer", "tsi")
AddMimeType("audio/voxware", "vox")
AddMimeType("audio/x-aiff", "aif aiff aifc")
AddMimeType("audio/x-dspeeh", "dus cht")
AddMimeType("audio/x-midi", "mid midi")
AddMimeType("audio/x-mpeg", "mp2")
AddMimeType("audio/x-pn-realaudio", "ram ra")
AddMimeType("audio/x-pn-realaudio-plugin", "rpm")
AddMimeType("audio/x-qt-stream", "stream")
AddMimeType("audio/x-wav", "wav")
AddMimeType("drawing/x-dwf", "dwf")
AddMimeType("image/cis-cod", "cod")
AddMimeType("image/cmu-raster", "ras")
AddMimeType("image/fif", "fif")
AddMimeType("image/gif", "gif")
AddMimeType("image/ief", "ief")
AddMimeType("image/jpeg", "jpeg jpg jpe")
AddMimeType("image/png", "png")
AddMimeType("image/tiff", "tiff tif")
AddMimeType("image/vasa", "mcf")
AddMimeType("image/vnd.wap.wbmp", "wbmp")
AddMimeType("image/x-freehand", "fh4 fh5 fhc")
AddMimeType("image/x-icon", "ico")
AddMimeType("image/x-portable-anymap", "pnm")
AddMimeType("image/x-portable-bitmap", "pbm")
AddMimeType("image/x-portable-graymap", "pgm")
AddMimeType("image/x-portable-pixmap", "ppm")
AddMimeType("image/x-rgb", "rgb")
AddMimeType("image/x-windowdump", "xwd")
AddMimeType("image/x-xbitmap", "xbm")
AddMimeType("image/x-xpixmap", "xpm")
AddMimeType("model/vrml", "wrl")
AddMimeType("text/comma-separated-values", "csv")
AddMimeType("text/css", "css")
AddMimeType("text/html", "htm html shtml shtm sht")
AddMimeType("text/javascript", "js")
AddMimeType("text/plain", "txt 1st readme diz nfo")
AddMimeType("text/richtext", "rtx")
AddMimeType("text/rtf", "rtf")
AddMimeType("text/tab-separated-values", "tsv")
AddMimeType("text/vnd.wap.wml", "wml")
AddMimeType("text/vnd.wap.wmlscript", "wmls")
AddMimeType("text/xml", "xml")
AddMimeType("text/x-setext", "etx")
AddMimeType("text/x-sgml", "sgm sgml")
AddMimeType("text/x-speech", "talk spc")
AddMimeType("video/mpeg", "mpeg mpg mpe")
AddMimeType("video/quicktime", "qt mov")
AddMimeType("video/vnd.vivo", "viv vivo")
AddMimeType("video/x-msvideo", "avi")
AddMimeType("video/x-sgi-movie", "movie")
AddMimeType("workbook/formulaone", "vts vtts")
AddMimeType("x-world/x-3dmf", "3dmf 3dm qd3d qd3")
AddMimeType("x-world/x-vrml", "wrl")

Procedure.s getMimeType(extension.s)
	Shared mime()
	Protected regexp=CreateRegularExpression(#PB_Any, "\b\Q"+extension+"\E\b")
	If regexp
		ForEach mime()
			If MatchRegularExpression(regexp, mime()\ext)
				FreeRegularExpression(regexp)
				ProcedureReturn mime()\mime
			EndIf
		Next
		FreeRegularExpression(regexp)
	EndIf
	ProcedureReturn "text/html" ; wenn nichts gefunden
EndProcedure


Debug getMimeType("txt")
Sucht absichtlich mit Regulären Ausdrücken, statt nur mit FindString(), denn so kann man nur ganze Wörter suchen. FindString() würde z. B. "htm" innerhalb von "html" finden.
Wer den Code weiter optimieren möchte, sollte häufiger benutzte Dateiendungen an den Anfang der Liste stellen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End