Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Get MIME Info for File With No Extension

0.00/5 (No votes)
7 Dec 2008 1  
Get MIME info for file with no extension
FindMimeInfoVB

Introduction

This code example uses API to access MIME information in the file header. One interesting point is that it will work for files that have no file extension. Code is current 2008 VB\C#.

Background

More information on MIME can be found here and at REGEDIT.EXE HKEY_CLASSES_ROOT\MIME\Database\Content Type\.

Using the Code

Simply call the function like so:

Me.TextBox2.Text = getMimeFromFile(Me.TextBox1.Text)
Public Declare Function FindMimeFromData Lib "urlmon.dll" (ByVal pBC As IntPtr, _
  <MarshalAs(UnmanagedType.LPWStr)> ByVal pwzUrl As String, _
  <MarshalAs(UnmanagedType.LPArray, ArraySubType:=UnmanagedType.I1, _
  SizeParamIndex:=3)> ByVal pBuffer As Byte(), ByVal cbSize As Integer, _
  <MarshalAs(UnmanagedType.LPWStr)> ByVal pwzMimeProposed As String, _
  ByVal dwMimeFlags As Integer, <MarshalAs(UnmanagedType.LPWStr)> _
  ByRef ppwzMimeOut As String, ByVal dwReserved As Integer) As Integer

 
Public Function getMimeFromFile(ByVal file As String) As String

Dim mimeout As String = ""

Dim MaxContent As Integer

Dim fs As FileStream

Dim buf() As Byte

Dim result As String

If Not System.IO.File.Exists(file) _
	Then Throw New FileNotFoundException(file + " not found")

If MaxContent > 4096 Then MaxContent = 4096

MaxContent = CInt(New FileInfo(file).Length)

fs = New FileStream(file, FileMode.Open)

ReDim buf(MaxContent)

fs.Read(buf, 0, MaxContent)

fs.Close()

result = FindMimeFromData(IntPtr.Zero, file, buf, MaxContent, Nothing, 0, mimeout, 0)

Return mimeout

End Function 

End Module

Points of Interest

A list of MIME type can be found here.

Ext. | MIME type

ai application/postscript
aif audio/x-aiff
aifc audio/x-aiff
aiff audio/x-aiff
asc text/plain atom application/atom+xml au audio/basic
avi video/x-msvideo
bcpio application/x-bcpio
bin application/octet-stream
bmp image/bmp cdf application/x-netcdf
cgm image/cgm
class application/octet-stream
cpio application/x-cpio
cpt application/mac-compactpro
csh application/x-csh
css text/css dcr application/x-director
dif video/x-dv
dir application/x-director
djv image/vnd.djvu
djvu image/vnd.djvu
dll application/octet-stream
dmg application/octet-stream
dms application/octet-stream
doc application/msword
dtd application/xml-dtd
dv video/x-dv
dvi application/x-dvi dxr application/x-director eps application/postscript etx text/x-setext
exe application/octet-stream
ez application/andrew-inset
gif image/gif gram application/srgs
grxml application/srgs+xml
gtar application/x-gtar
hdf application/x-hdf
hqx application/mac-binhex40
htm text/html
html text/html ice x-conference/x-cooltalk
ico image/x-icon
ics text/calendar
ief image/ief
ifb text/calendar
iges model/iges
igs model/iges
jnlp application/x-java-jnlp-file
jp2 image/jp2
jpe image/jpeg
jpeg image/jpeg
jpg image/jpeg
js application/x-javascript
kar audio/midi
latex application/x-latex
lha application/octet-stream
lzh application/octet-stream m3u audio/x-mpegurl
m4a audio/mp4a-latm
m4b audio/mp4a-latm
m4p audio/mp4a-latm
m4u video/vnd.mpegurl
m4v video/x-m4v mac image/x-macpaint
man application/x-troff-man
mathml application/mathml+xml
me application/x-troff-me
mesh model/mesh
mid audio/midi midi audio/midi
mif application/vnd.mif
mov video/quicktime
movie video/x-sgi-movie
mp2 audio/mpeg mp3 audio/mpeg mp4 video/mp4
mpe video/mpeg
mpeg video/mpeg
mpg video/mpeg
mpga audio/mpeg
ms application/x-troff-ms
msh model/mesh
mxu video/vnd.mpegurl
nc application/x-netcdf
oda application/oda
ogg application/ogg pbm image/x-portable-bitmap
pct image/pict
pdb chemical/x-pdb
pdf application/pdf
pgm image/x-portable-graymap
pgn application/x-chess-pgn
pic image/pict
pict image/pict
png image/png
pnm image/x-portable-anymap
pnt image/x-macpaint
pntg image/x-macpaint
ppm image/x-portable-pixmap
ppt application/vnd.ms-powerpoint
ps application/postscript qt video/quicktime
qti image/x-quicktime
qtif image/x-quicktime
ra audio/x-pn-realaudio
ram audio/x-pn-realaudio
ras image/x-cmu-raster rdf application/rdf+xml
rgb image/x-rgb rm application/vnd.rn-realmedia
roff application/x-troff
rtf text/rtf
rtx text/richtext
sgm text/sgml
sgml text/sgml sh application/x-sh
shar application/x-shar
silo model/mesh
sit application/x-stuffit
skd application/x-koan
skm application/x-koan
skp application/x-koan
skt application/x-koan
smi application/smil smil application/smil
snd audio/basic
so application/octet-stream spl application/x-futuresplash src application/x-wais-source
sv4cpio application/x-sv4cpio
sv4crc application/x-sv4crc
svg image/svg+xml swf application/x-shockwave-flash
t application/x-troff
tar application/x-tar
tcl application/x-tcl tex application/x-tex
texi application/x-texinfo texinfo application/x-texinfo
tif image/tiff
tiff image/tiff tr application/x-troff
tsv text/tab-separated-values
txt text/plain
ustar application/x-ustar vcd application/x-cdlink
vrml model/vrml
vxml application/voicexml+xml
wav audio/x-wav
wbmp image/vnd.wap.wbmp
wbmxl application/vnd.wap.wbxml
wml text/vnd.wap.wml
wmlc application/vnd.wap.wmlc
wmls text/vnd.wap.wmlscript
wmlsc application/vnd.wap.wmlscriptc
wrl model/vrml
xbm image/x-xbitmap
xht application/xhtml+xml
xhtml application/xhtml+xml
xls application/vnd.ms-excel
xml application/xml
xpm image/x-xpixmap
xsl application/xml
xslt application/xslt+xml
xul application/vnd.mozilla.xul+xml
xwd image/x-xwindowdump
xyz chemical/x-xyz
zip application/zip

History

  • 8-Dec-2008 - First version submitted

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here