Установка MimeType в С#
Есть ли лучший способ установки 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;
}
Ответы
Ответ 1
Я получил это от this blogpost:
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;
}
Ответ 2
Для этого нужна только одна строка.
System.Web.MimeMapping.GetMimeMapping(FileName)
Примечание: Только .NET 4.5+
Ответ 3
A Dictionary<String,String>
может быть более понятным.
private static Dictionary<String, String> mtypes = new Dictionary<string, string> {
{".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<String>(filetype))
return mtypes[filetype];
return "image/" + filetype.Replace(".", "").ToLower();
}
Ответ 4
Если у вас нет доступа к реестру или вы не хотите использовать реестр, вы всегда можете использовать словарь для этого.
Dictionary<string,string> mimeTypes = new Dictionary<string,string>() {
{ ".PDF","application/pdf"},
{ ".JPG", "image/jpeg" },
{ ".JPEG", "image/jpeg" } }; // and so on
Затем используйте:
string mimeType = mimeTypes[fileExtension];
Кроме того, вы можете хранить эти сопоставления в файле XML и кэшировать их с зависимостью файлов, а не хранить их в своем коде.