2

I am using following code to list a file from a folder and display for download

public FileResult Download(string id) { int fid = Convert.ToInt32(id); var files = new DataClasses().GetFiles(); string filename = (from f in files where f.FileId == fid select f.FilePath).First(); string contentType = "application/doc"; //Parameters to file are //1. The File Path on the File Server //2. The content type MIME type //3. The parameter for the file save by the browser return File(filename, contentType, "Report.doc"); } 

enter image description here here everything is working fine for word documents but if I place any other type of file like excel or pdf it showing error I know this error is due to contentType = "application/doc"; I want to ask how to make the content type dynamic so that any kind of file inside the folder can be easily downloaded.

I know I can do it something like

string contentType = string.Empty; if (CurrentFileName.Contains(".pdf")) { contentType = "application/pdf"; } else if (CurrentFileName.Contains(".docx")) { contentType = "application/docx"; } 

But here I need to write condition for every file type. Is there any way to ignore these condition checks?

6
  • It's not really clear what you're asking. Just put the right mime type in there instead of the hard-coded application/doc. Are you really asking how to detect the mime type from the data? Commented Mar 25, 2015 at 6:49
  • i have update my question check it now. Commented Mar 25, 2015 at 6:52
  • 1
    Well you can use a Dictionary<string, string> to store the mime type associated with a file extension - but that can still be wrong... Commented Mar 25, 2015 at 7:02
  • actually i use string contentType = "application/." + Path.GetExtension(filename); Is it a correct way ? Commented Mar 25, 2015 at 7:10
  • 3
    No, because: a) that's just not always the right mime type (think images, for example); b) ideally you should detect the mime type based on the data rather than the filename - that's harder (I'm sure there are libraries to do it) but more reliable. It depends somewhat on your context though. It would probably be best to detect the mime type when the data is added to the database, and keep it there - then you don't need to do the detection every time you download it. Commented Mar 25, 2015 at 7:12

4 Answers 4

4

if you're not using .Net framework 4.5 then I suggest using a dictionary to find an apropriate mime Type for each possible extensions.

public FileResult Download(string id) { int fid = Convert.ToInt32(id); var files = new DataClasses().GetFiles(); string filename = (from f in files where f.FileId == fid select f.FilePath).First(); String filePath = fileName; fileName = Path.GetFileName(filePath); String contentType = GetFromFileName(fileName); return File(filePath, contentType, fileName); } public String GetFromFileName(String fileName) { return GetFromExtension(Path.GetExtension(fileName).Remove(0, 1)); } public String GetFromExtension(String ext) { if (MIMETypesDictionary.ContainsKey(ext)) { return MIMETypesDictionary[extension]; } return "unknown/unknown"; } private static IDictionary<string, string> MIMETypesDictionary = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase) { {"323", "text/h323"}, {"3g2", "video/3gpp2"}, {"3gp", "video/3gpp"}, {"3gp2", "video/3gpp2"}, {"3gpp", "video/3gpp"}, {"7z", "application/x-7z-compressed"}, {"aa", "audio/audible"}, {"AAC", "audio/aac"}, {"aaf", "application/octet-stream"}, {"aax", "audio/vnd.audible.aax"}, {"ac3", "audio/ac3"}, {"aca", "application/octet-stream"}, {"accda", "application/msaccess.addin"}, {"accdb", "application/msaccess"}, {"accdc", "application/msaccess.cab"}, {"accde", "application/msaccess"}, {"accdr", "application/msaccess.runtime"}, {"accdt", "application/msaccess"}, {"accdw", "application/msaccess.webapplication"}, {"accft", "application/msaccess.ftemplate"}, {"acx", "application/internet-property-stream"}, {"AddIn", "text/xml"}, {"ade", "application/msaccess"}, {"adobebridge", "application/x-bridge-url"}, {"adp", "application/msaccess"}, {"ADT", "audio/vnd.dlna.adts"}, {"ADTS", "audio/aac"}, {"afm", "application/octet-stream"}, {"ai", "application/postscript"}, {"aif", "audio/x-aiff"}, {"aifc", "audio/aiff"}, {"aiff", "audio/aiff"}, {"air", "application/vnd.adobe.air-application-installer-package+zip"}, {"amc", "application/x-mpeg"}, {"application", "application/x-ms-application"}, {"art", "image/x-jg"}, {"asa", "application/xml"}, {"asax", "application/xml"}, {"ascx", "application/xml"}, {"asd", "application/octet-stream"}, {"asf", "video/x-ms-asf"}, {"ashx", "application/xml"}, {"asi", "application/octet-stream"}, {"asm", "text/plain"}, {"asmx", "application/xml"}, {"aspx", "application/xml"}, {"asr", "video/x-ms-asf"}, {"asx", "video/x-ms-asf"}, {"atom", "application/atom+xml"}, {"au", "audio/basic"}, {"avi", "video/x-msvideo"}, {"axs", "application/olescript"}, {"bas", "text/plain"}, {"bcpio", "application/x-bcpio"}, {"bin", "application/octet-stream"}, {"bmp", "image/bmp"}, {"c", "text/plain"}, {"cab", "application/octet-stream"}, {"caf", "audio/x-caf"}, {"calx", "application/vnd.ms-office.calx"}, {"cat", "application/vnd.ms-pki.seccat"}, {"cc", "text/plain"}, {"cd", "text/plain"}, {"cdda", "audio/aiff"}, {"cdf", "application/x-cdf"}, {"cer", "application/x-x509-ca-cert"}, {"chm", "application/octet-stream"}, {"class", "application/x-java-applet"}, {"clp", "application/x-msclip"}, {"cmx", "image/x-cmx"}, {"cnf", "text/plain"}, {"cod", "image/cis-cod"}, {"config", "application/xml"}, {"contact", "text/x-ms-contact"}, {"coverage", "application/xml"}, {"cpio", "application/x-cpio"}, {"cpp", "text/plain"}, {"crd", "application/x-mscardfile"}, {"crl", "application/pkix-crl"}, {"crt", "application/x-x509-ca-cert"}, {"cs", "text/plain"}, {"csdproj", "text/plain"}, {"csh", "application/x-csh"}, {"csproj", "text/plain"}, {"css", "text/css"}, {"csv", "text/csv"}, {"cur", "application/octet-stream"}, {"cxx", "text/plain"}, {"dat", "application/octet-stream"}, {"datasource", "application/xml"}, {"dbproj", "text/plain"}, {"dcr", "application/x-director"}, {"def", "text/plain"}, {"deploy", "application/octet-stream"}, {"der", "application/x-x509-ca-cert"}, {"dgml", "application/xml"}, {"dib", "image/bmp"}, {"dif", "video/x-dv"}, {"dir", "application/x-director"}, {"disco", "text/xml"}, {"dll", "application/x-msdownload"}, {"dll.config", "text/xml"}, {"dlm", "text/dlm"}, {"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"}, {"dsp", "application/octet-stream"}, {"dsw", "text/plain"}, {"dtd", "text/xml"}, {"dtsConfig", "text/xml"}, {"dv", "video/x-dv"}, {"dvi", "application/x-dvi"}, {"dwf", "drawing/x-dwf"}, {"dwp", "application/octet-stream"}, {"dxr", "application/x-director"}, {"eml", "message/rfc822"}, {"emz", "application/octet-stream"}, {"eot", "application/octet-stream"}, {"eps", "application/postscript"}, {"etl", "application/etl"}, {"etx", "text/x-setext"}, {"evy", "application/envoy"}, {"exe", "application/octet-stream"}, {"exe.config", "text/xml"}, {"fdf", "application/vnd.fdf"}, {"fif", "application/fractals"}, {"filters", "Application/xml"}, {"fla", "application/octet-stream"}, {"flr", "x-world/x-vrml"}, {"flv", "video/x-flv"}, {"fsscript", "application/fsharp-script"}, {"fsx", "application/fsharp-script"}, {"generictest", "application/xml"}, {"gif", "image/gif"}, {"group", "text/x-ms-group"}, {"gsm", "audio/x-gsm"}, {"gtar", "application/x-gtar"}, {"gz", "application/x-gzip"}, {"h", "text/plain"}, {"hdf", "application/x-hdf"}, {"hdml", "text/x-hdml"}, {"hhc", "application/x-oleobject"}, {"hhk", "application/octet-stream"}, {"hhp", "application/octet-stream"}, {"hlp", "application/winhlp"}, {"hpp", "text/plain"}, {"hqx", "application/mac-binhex40"}, {"hta", "application/hta"}, {"htc", "text/x-component"}, {"htm", "text/html"}, {"html", "text/html"}, {"htt", "text/webviewhtml"}, {"hxa", "application/xml"}, {"hxc", "application/xml"}, {"hxd", "application/octet-stream"}, {"hxe", "application/xml"}, {"hxf", "application/xml"}, {"hxh", "application/octet-stream"}, {"hxi", "application/octet-stream"}, {"hxk", "application/xml"}, {"hxq", "application/octet-stream"}, {"hxr", "application/octet-stream"}, {"hxs", "application/octet-stream"}, {"hxt", "text/html"}, {"hxv", "application/xml"}, {"hxw", "application/octet-stream"}, {"hxx", "text/plain"}, {"i", "text/plain"}, {"ico", "image/x-icon"}, {"ics", "application/octet-stream"}, {"idl", "text/plain"}, {"ief", "image/ief"}, {"iii", "application/x-iphone"}, {"inc", "text/plain"}, {"inf", "application/octet-stream"}, {"inl", "text/plain"}, {"ins", "application/x-internet-signup"}, {"ipa", "application/x-itunes-ipa"}, {"ipg", "application/x-itunes-ipg"}, {"ipproj", "text/plain"}, {"ipsw", "application/x-itunes-ipsw"}, {"iqy", "text/x-ms-iqy"}, {"isp", "application/x-internet-signup"}, {"ite", "application/x-itunes-ite"}, {"itlp", "application/x-itunes-itlp"}, {"itms", "application/x-itunes-itms"}, {"itpc", "application/x-itunes-itpc"}, {"IVF", "video/x-ivf"}, {"jar", "application/java-archive"}, {"java", "application/octet-stream"}, {"jck", "application/liquidmotion"}, {"jcz", "application/liquidmotion"}, {"jfif", "image/pjpeg"}, {"jnlp", "application/x-java-jnlp-file"}, {"jpb", "application/octet-stream"}, {"jpe", "image/jpeg"}, {"jpeg", "image/jpeg"}, {"jpg", "image/jpeg"}, {"js", "application/x-javascript"}, {"json", "application/json"}, {"jsx", "text/jscript"}, {"jsxbin", "text/plain"}, {"latex", "application/x-latex"}, {"library-ms", "application/windows-library+xml"}, {"lit", "application/x-ms-reader"}, {"loadtest", "application/xml"}, {"lpk", "application/octet-stream"}, {"lsf", "video/x-la-asf"}, {"lst", "text/plain"}, {"lsx", "video/x-la-asf"}, {"lzh", "application/octet-stream"}, {"m13", "application/x-msmediaview"}, {"m14", "application/x-msmediaview"}, {"m1v", "video/mpeg"}, {"m2t", "video/vnd.dlna.mpeg-tts"}, {"m2ts", "video/vnd.dlna.mpeg-tts"}, {"m2v", "video/mpeg"}, {"m3u", "audio/x-mpegurl"}, {"m3u8", "audio/x-mpegurl"}, {"m4a", "audio/m4a"}, {"m4b", "audio/m4b"}, {"m4p", "audio/m4p"}, {"m4r", "audio/x-m4r"}, {"m4v", "video/x-m4v"}, {"mac", "image/x-macpaint"}, {"mak", "text/plain"}, {"man", "application/x-troff-man"}, {"manifest", "application/x-ms-manifest"}, {"map", "text/plain"}, {"master", "application/xml"}, {"mda", "application/msaccess"}, {"mdb", "application/x-msaccess"}, {"mde", "application/msaccess"}, {"mdp", "application/octet-stream"}, {"me", "application/x-troff-me"}, {"mfp", "application/x-shockwave-flash"}, {"mht", "message/rfc822"}, {"mhtml", "message/rfc822"}, {"mid", "audio/mid"}, {"midi", "audio/mid"}, {"mix", "application/octet-stream"}, {"mk", "text/plain"}, {"mmf", "application/x-smaf"}, {"mno", "text/xml"}, {"mny", "application/x-msmoney"}, {"mod", "video/mpeg"}, {"mov", "video/quicktime"}, {"movie", "video/x-sgi-movie"}, {"mp2", "video/mpeg"}, {"mp2v", "video/mpeg"}, {"mp3", "audio/mpeg"}, {"mp4", "video/mp4"}, {"mp4v", "video/mp4"}, {"mpa", "video/mpeg"}, {"mpe", "video/mpeg"}, {"mpeg", "video/mpeg"}, {"mpf", "application/vnd.ms-mediapackage"}, {"mpg", "video/mpeg"}, {"mpp", "application/vnd.ms-project"}, {"mpv2", "video/mpeg"}, {"mqv", "video/quicktime"}, {"ms", "application/x-troff-ms"}, {"msi", "application/octet-stream"}, {"mso", "application/octet-stream"}, {"mts", "video/vnd.dlna.mpeg-tts"}, {"mtx", "application/xml"}, {"mvb", "application/x-msmediaview"}, {"mvc", "application/x-miva-compiled"}, {"mxp", "application/x-mmxp"}, {"nc", "application/x-netcdf"}, {"nsc", "video/x-ms-asf"}, {"nws", "message/rfc822"}, {"ocx", "application/octet-stream"}, {"oda", "application/oda"}, {"odc", "text/x-ms-odc"}, {"odh", "text/plain"}, {"odl", "text/plain"}, {"odp", "application/vnd.oasis.opendocument.presentation"}, {"ods", "application/oleobject"}, {"odt", "application/vnd.oasis.opendocument.text"}, {"one", "application/onenote"}, {"onea", "application/onenote"}, {"onepkg", "application/onenote"}, {"onetmp", "application/onenote"}, {"onetoc", "application/onenote"}, {"onetoc2", "application/onenote"}, {"orderedtest", "application/xml"}, {"osdx", "application/opensearchdescription+xml"}, {"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"}, {"pbm", "image/x-portable-bitmap"}, {"pcast", "application/x-podcast"}, {"pct", "image/pict"}, {"pcx", "application/octet-stream"}, {"pcz", "application/octet-stream"}, {"pdf", "application/pdf"}, {"pfb", "application/octet-stream"}, {"pfm", "application/octet-stream"}, {"pfx", "application/x-pkcs12"}, {"pgm", "image/x-portable-graymap"}, {"pic", "image/pict"}, {"pict", "image/pict"}, {"pkgdef", "text/plain"}, {"pkgundef", "text/plain"}, {"pko", "application/vnd.ms-pki.pko"}, {"pls", "audio/scpls"}, {"pma", "application/x-perfmon"}, {"pmc", "application/x-perfmon"}, {"pml", "application/x-perfmon"}, {"pmr", "application/x-perfmon"}, {"pmw", "application/x-perfmon"}, {"png", "image/png"}, {"pnm", "image/x-portable-anymap"}, {"pnt", "image/x-macpaint"}, {"pntg", "image/x-macpaint"}, {"pnz", "image/png"}, {"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"}, {"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"}, {"prf", "application/pics-rules"}, {"prm", "application/octet-stream"}, {"prx", "application/octet-stream"}, {"ps", "application/postscript"}, {"psc1", "application/PowerShell"}, {"psd", "application/octet-stream"}, {"psess", "application/xml"}, {"psm", "application/octet-stream"}, {"psp", "application/octet-stream"}, {"pub", "application/x-mspublisher"}, {"pwz", "application/vnd.ms-powerpoint"}, {"qht", "text/x-html-insertion"}, {"qhtm", "text/x-html-insertion"}, {"qt", "video/quicktime"}, {"qti", "image/x-quicktime"}, {"qtif", "image/x-quicktime"}, {"qtl", "application/x-quicktimeplayer"}, {"qxd", "application/octet-stream"}, {"ra", "audio/x-pn-realaudio"}, {"ram", "audio/x-pn-realaudio"}, {"rar", "application/octet-stream"}, {"ras", "image/x-cmu-raster"}, {"rat", "application/rat-file"}, {"rc", "text/plain"}, {"rc2", "text/plain"}, {"rct", "text/plain"}, {"rdlc", "application/xml"}, {"resx", "application/xml"}, {"rf", "image/vnd.rn-realflash"}, {"rgb", "image/x-rgb"}, {"rgs", "text/plain"}, {"rm", "application/vnd.rn-realmedia"}, {"rmi", "audio/mid"}, {"rmp", "application/vnd.rn-rn_music_package"}, {"roff", "application/x-troff"}, {"rpm", "audio/x-pn-realaudio-plugin"}, {"rqy", "text/x-ms-rqy"}, {"rtf", "application/rtf"}, {"rtx", "text/richtext"}, {"ruleset", "application/xml"}, {"s", "text/plain"}, {"safariextz", "application/x-safari-safariextz"}, {"scd", "application/x-msschedule"}, {"sct", "text/scriptlet"}, {"sd2", "audio/x-sd2"}, {"sdp", "application/sdp"}, {"sea", "application/octet-stream"}, {"searchConnector-ms", "application/windows-search-connector+xml"}, {"setpay", "application/set-payment-initiation"}, {"setreg", "application/set-registration-initiation"}, {"settings", "application/xml"}, {"sgimb", "application/x-sgimb"}, {"sgml", "text/sgml"}, {"sh", "application/x-sh"}, {"shar", "application/x-shar"}, {"shtml", "text/html"}, {"sit", "application/x-stuffit"}, {"sitemap", "application/xml"}, {"skin", "application/xml"}, {"sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12"}, {"sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide"}, {"slk", "application/vnd.ms-excel"}, {"sln", "text/plain"}, {"slupkg-ms", "application/x-ms-license"}, {"smd", "audio/x-smd"}, {"smi", "application/octet-stream"}, {"smx", "audio/x-smd"}, {"smz", "audio/x-smd"}, {"snd", "audio/basic"}, {"snippet", "application/xml"}, {"snp", "application/octet-stream"}, {"sol", "text/plain"}, {"sor", "text/plain"}, {"spc", "application/x-pkcs7-certificates"}, {"spl", "application/futuresplash"}, {"src", "application/x-wais-source"}, {"srf", "text/plain"}, {"SSISDeploymentManifest", "text/xml"}, {"ssm", "application/streamingmedia"}, {"sst", "application/vnd.ms-pki.certstore"}, {"stl", "application/vnd.ms-pki.stl"}, {"sv4cpio", "application/x-sv4cpio"}, {"sv4crc", "application/x-sv4crc"}, {"svc", "application/xml"}, {"swf", "application/x-shockwave-flash"}, {"t", "application/x-troff"}, {"tar", "application/x-tar"}, {"tcl", "application/x-tcl"}, {"testrunconfig", "application/xml"}, {"testsettings", "application/xml"}, {"tex", "application/x-tex"}, {"texi", "application/x-texinfo"}, {"texinfo", "application/x-texinfo"}, {"tgz", "application/x-compressed"}, {"thmx", "application/vnd.ms-officetheme"}, {"thn", "application/octet-stream"}, {"tif", "image/tiff"}, {"tiff", "image/tiff"}, {"tlh", "text/plain"}, {"tli", "text/plain"}, {"toc", "application/octet-stream"}, {"tr", "application/x-troff"}, {"trm", "application/x-msterminal"}, {"trx", "application/xml"}, {"ts", "video/vnd.dlna.mpeg-tts"}, {"tsv", "text/tab-separated-values"}, {"ttf", "application/octet-stream"}, {"tts", "video/vnd.dlna.mpeg-tts"}, {"txt", "text/plain"}, {"u32", "application/octet-stream"}, {"uls", "text/iuls"}, {"user", "text/plain"}, {"ustar", "application/x-ustar"}, {"vb", "text/plain"}, {"vbdproj", "text/plain"}, {"vbk", "video/mpeg"}, {"vbproj", "text/plain"}, {"vbs", "text/vbscript"}, {"vcf", "text/x-vcard"}, {"vcproj", "Application/xml"}, {"vcs", "text/plain"}, {"vcxproj", "Application/xml"}, {"vddproj", "text/plain"}, {"vdp", "text/plain"}, {"vdproj", "text/plain"}, {"vdx", "application/vnd.ms-visio.viewer"}, {"vml", "text/xml"}, {"vscontent", "application/xml"}, {"vsct", "text/xml"}, {"vsd", "application/vnd.visio"}, {"vsi", "application/ms-vsi"}, {"vsix", "application/vsix"}, {"vsixlangpack", "text/xml"}, {"vsixmanifest", "text/xml"}, {"vsmdi", "application/xml"}, {"vspscc", "text/plain"}, {"vss", "application/vnd.visio"}, {"vsscc", "text/plain"}, {"vssettings", "text/xml"}, {"vssscc", "text/plain"}, {"vst", "application/vnd.visio"}, {"vstemplate", "text/xml"}, {"vsto", "application/x-ms-vsto"}, {"vsw", "application/vnd.visio"}, {"vsx", "application/vnd.visio"}, {"vtx", "application/vnd.visio"}, {"wav", "audio/wav"}, {"wave", "audio/wav"}, {"wax", "audio/x-ms-wax"}, {"wbk", "application/msword"}, {"wbmp", "image/vnd.wap.wbmp"}, {"wcm", "application/vnd.ms-works"}, {"wdb", "application/vnd.ms-works"}, {"wdp", "image/vnd.ms-photo"}, {"webarchive", "application/x-safari-webarchive"}, {"webtest", "application/xml"}, {"wiq", "application/xml"}, {"wiz", "application/msword"}, {"wks", "application/vnd.ms-works"}, {"WLMP", "application/wlmoviemaker"}, {"wlpginstall", "application/x-wlpg-detect"}, {"wlpginstall3", "application/x-wlpg3-detect"}, {"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"}, {"wmp", "video/x-ms-wmp"}, {"wmv", "video/x-ms-wmv"}, {"wmx", "video/x-ms-wmx"}, {"wmz", "application/x-ms-wmz"}, {"wpl", "application/vnd.ms-wpl"}, {"wps", "application/vnd.ms-works"}, {"wri", "application/x-mswrite"}, {"wrl", "x-world/x-vrml"}, {"wrz", "x-world/x-vrml"}, {"wsc", "text/scriptlet"}, {"wsdl", "text/xml"}, {"wvx", "video/x-ms-wvx"}, {"x", "application/directx"}, {"xaf", "x-world/x-vrml"}, {"xaml", "application/xaml+xml"}, {"xap", "application/x-silverlight-app"}, {"xbap", "application/x-ms-xbap"}, {"xbm", "image/x-xbitmap"}, {"xdr", "text/plain"}, {"xht", "application/xhtml+xml"}, {"xhtml", "application/xhtml+xml"}, {"xla", "application/vnd.ms-excel"}, {"xlam", "application/vnd.ms-excel.addin.macroEnabled.12"}, {"xlc", "application/vnd.ms-excel"}, {"xld", "application/vnd.ms-excel"}, {"xlk", "application/vnd.ms-excel"}, {"xll", "application/vnd.ms-excel"}, {"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"}, {"xml", "text/xml"}, {"xmta", "application/xml"}, {"xof", "x-world/x-vrml"}, {"XOML", "text/plain"}, {"xpm", "image/x-xpixmap"}, {"xps", "application/vnd.ms-xpsdocument"}, {"xrm-ms", "text/xml"}, {"xsc", "application/xml"}, {"xsd", "text/xml"}, {"xsf", "text/xml"}, {"xsl", "text/xml"}, {"xslt", "text/xml"}, {"xsn", "application/octet-stream"}, {"xss", "application/xml"}, {"xtp", "application/octet-stream"}, {"xwd", "image/x-xwindowdump"}, {"z", "application/x-compress"}, {"zip", "application/x-zip-compressed"} } 
Sign up to request clarification or add additional context in comments.

Comments

4

You can use the MimeMapping class:

using System.Web; (...) return File(filename, MimeMapping.GetMimeMapping(filename), ...); 

1 Comment

yep, beautiful!
3

did you try this?

<configuration> <system.webServer> <staticContent> <mimeMap fileExtension=".syx" mimeType="application/octet-stream" /> <mimeMap fileExtension=".tab" mimeType="text/plain" /> </staticContent> </system.webServer> </configuration> 

http://www.iis.net/configreference/system.webserver/staticcontent/mimemap

1 Comment

inside the method can't i make string contentType = "application/doc"; dynamic?
1

File extensions can be renamed thus giving false information. There is a library called Tridlib.net that can help detect actual mime type by reading a file. In case anything is unclear, please reply I will try to explain and improve this answer.

Reference : http://mark0.net/code-tridlib-e.html

Note: The library available on this site is 32bit version so you have to test your web application in 32bit mode. However there are two solution for this.

  1. I had the same problem so I instead created a C# console utility (32bit) that uses this library and i am running this utility's EXE within my web app (64bit). Refer Run an exe from C# code
  2. Or you can ask the developer for 'TridLib' for 64bit version which is very expensive. Although 32 bit version is also limited to testing purpose, you might have to check with the developer for commercial license.

Consider this sample code about how to use this library.

Description of sample code :

Prerequisites

  1. Download its DLL from the referenced website, to your project.
  2. You will also get a definition file of TridLib called "TrIDDefs.TRD", keep it inside some directory in your project so that it will be utilized at runtime to detect mime types.

Flow:

  1. Download a sample source package to help you setup your TridLib reusable class from http://mark0.net/download/tridlib-samples.zip
  2. In my example "TridMimeCheckResult" is a result class that I have created to hold different mime types as returned by using this library. This library returns multiple mime types for a single file upon number of iterations. Which is why I store all types as part of list. After that the type that has maximum Point of matching probability is considered the most accurate mime type. Point is basically a number that TridLib assigns to identified types.
  3. I have initilized TridLib by passing the directory path where "TrIDDefs.TRD" is located.
  4. Then I have passed the complete path to its method TrID_SubmitFileA for which I want to know the mime type.
  5. Then we have to run iterations using pre defined logic shared by TridLib on its website and collect all resultant types.
  6. After that I run a final check to determine which mime type has largest Point value and consider that as accurate one.

public class Program { static void Main(string[] args) { TridMimeCheckResult finalMimeResult = ValidateMime(filePathToCheck, tridDefinitionPath); // In place of "tridDefinitionPath", you have to pass the location where "TrIDDefs.TRD" file is located. } public class TridMimeCheckResult { public string FiletypeExtension { get; internal set; } public string FileTypeName { get; internal set; } public int Point { get; set; } } public static string ValidateMime(string filePath, string tridDefinitionPackPath) { int Ret; int ResNum; int ResId; string sTrIDRes = ""; TridMimeCheckResult finalMimeResult = new TridMimeCheckResult(); List<TridMimeCheckResult> listMimeTypes = new List<TridMimeCheckResult>(); Ret = TrIDLib.TrID_LoadDefsPack(tridDefinitionPackPath); // submit the file Ret = TrIDLib.TrID_SubmitFileA(filePath); // perform the analysis Ret = TrIDLib.TrID_Analyze(); if (Ret > 0) { // get the number of results & display various info ResNum = TrIDLib.TrID_GetInfoNET(TrIDLib.TRID_GET_RES_NUM, 0, ref sTrIDRes); for (ResId = 1; ResId <= ResNum; ResId++) { TridMimeCheckResult newMimeType = new TridMimeCheckResult(); Ret = TrIDLib.TrID_GetInfoNET(TrIDLib.TRID_GET_RES_FILETYPE, ResId, ref sTrIDRes); newMimeType.FileTypeName = sTrIDRes; Ret = TrIDLib.TrID_GetInfoNET(TrIDLib.TRID_GET_RES_FILEEXT, ResId, ref sTrIDRes); newMimeType.FiletypeExtension = sTrIDRes; Ret = TrIDLib.TrID_GetInfoNET(TrIDLib.TRID_GET_RES_POINTS, ResId, ref sTrIDRes); newMimeType.Point = Ret; listMimeTypes.Add(newMimeType); } } string finalConsolidatedList = string.Empty; if (listMimeTypes.Count > 0) { //Running iterations to find most probable match by comparing the Point. finalMimeResult = listMimeTypes.Aggregate((i1, i2) => i1.Point > i2.Point ? i1 : i2); } return finalMimeResult; } } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.