Как я могу узнать, представляет ли строка допустимый тип MIME?

У меня есть целая куча строк, которые должны представлять типы MIME. Однако некоторые из этих строк имеют неправильные/недопустимые типы MIME. Есть ли способ в .NET Framework получить список допустимых типов MIME?


person Esteban Araya    schedule 10.06.2009    source источник
comment
Вы ищете список для справки или вы ищете какой-то метод проверки типов MIME в вашем приложении?   -  person James Conigliaro    schedule 10.06.2009
comment
@James: я ищу способ проверить.   -  person Esteban Araya    schedule 11.06.2009


Ответы (4)


Ознакомьтесь с этим сообщением о переполнении стека о добавлении пользовательского mime. типы.

Вы должны быть в состоянии сделать что-то вроде

using (DirectoryEntry mimeMap = new DirectoryEntry("IIS://Localhost/MimeMap"))
{
    PropertyValueCollection propValues = mimeMap.Properties["MimeMap"];
    foreach(IISOle.MimeMap mimeType in propValues) 
    //must cast to the interface and not the class
    {
      //access mimeType.MimeType to get the mime type string.
    }
}
person Matthew Vines    schedule 10.06.2009

У IANA есть список здесь. Я думаю, что это более авторитетно, чем большинство списков, которые вы можете найти.

person adrianbanks    schedule 10.06.2009

хотя он не является каноническим в том смысле, что он управляется стандартом, файл файл mime.types, поставляемый с любой версией Apache, даст вам хорошее представление о том, что он (и, следовательно, большая часть Интернета) считает допустимыми типами MIME. .

person Dan Davies Brackett    schedule 10.06.2009

Вслед за DDaviesBracket вы можете найти последние mime.types здесь:

http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

а затем использовать список (например, для С#):


string[] linesOfMimeTypes = File.ReadAllLines("mime.types");

List<string> mimeTypes = new List<string>();
foreach( string line in linesOfMimeTypes )
{
    if( line.length < 1 )
        continue;
    if( line[0] == '#' )
        continue;
    // else:
    mimeTypes.Add( line.Split( new char[] { ' ', '\t' } )[0] );
}

if( mimeTypes.Contains( oneToTest ) )
{
    // hooray!
}
person maxwellb    schedule 10.06.2009