在C#中设置MimeType

有没有一种更好的方法来设置C#中的mimetypes而不是我想要提前感谢的那种。

static String MimeType(string filePath) { String ret = null; FileInfo file = new FileInfo(filePath); if (file.Extension.ToUpper() == ".PDF") { ret = "application/pdf"; } else if (file.Extension.ToUpper() == ".JPG" || file.Extension.ToUpper() == ".JPEG") { ret = "image/jpeg"; } else if (file.Extension.ToUpper() == ".PNG") { ret = "image/png"; } else if (file.Extension.ToUpper() == ".GIF") { ret = "image/gif"; } else if (file.Extension.ToUpper() == ".TIFF" || file.Extension.ToUpper() == ".TIF") { ret = "image/tiff"; } else { ret = "image/" + file.Extension.Replace(".", ""); } return ret; } 

我从这篇博文中得到了这个:

 private string GetMimeType (string fileName) { string mimeType = "application/unknown"; string ext = System.IO.Path.GetExtension(fileName).ToLower(); Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext); if (regKey != null && regKey.GetValue("Content Type") != null) mimeType = regKey.GetValue("Content Type").ToString(); return mimeType; } 

只需要这一行就可以做到这一点。

 System.Web.MimeMapping.GetMimeMapping(FileName) 

注意:它只是.NET 4.5+

Dictionary可能会更清晰。

 private static Dictionary mtypes = new Dictionary { {".PDF", "application/pdf" }, {".JPG", "image/jpeg"}, {".PNG", "image/png"}, {".GIF", "image/gif"}, {".TIFF","image/tiff"}, {".TIF", "image/tiff"} }; static String MimeType(String filePath) { System.IO.FileInfo file = new System.IO.FileInfo(filePath); String filetype = file.Extension.ToUpper(); if(mtypes.Keys.Contains(filetype)) return mtypes[filetype]; return "image/" + filetype.Replace(".", "").ToLower(); } 

如果您没有注册表访问权限或者不想使用注册表,则可以始终使用Dictionary。

 Dictionary mimeTypes = new Dictionary() { { ".PDF","application/pdf"}, { ".JPG", "image/jpeg" }, { ".JPEG", "image/jpeg" } }; // and so on 

然后使用:

 string mimeType = mimeTypes[fileExtension]; 

此外,您可以将这些映射存储在XML文件中,并使用文件依赖关系缓存它们,而不是将它们保存在代码中。