Comment puis-je obtenir une extension de fichier par type de contenu?
Exemple Je sais que le fichier est "text/css" donc l'extension sera ".css".
private static string GetExtension(string contentType)
{
string ext = ".";
{ DETERMINATION CODE IN HERE }
return ext;
}
La "meilleure" solution que je connaisse consiste à interroger le registre. Vous pouvez trouver un exemple de code ici. http://cyotek.com/blog/mime-types-and-file-extensions
public static string GetDefaultExtension(string mimeType)
{
string result;
RegistryKey key;
object value;
key = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type\" + mimeType, false);
value = key != null ? key.GetValue("Extension", null) : null;
result = value != null ? value.ToString() : string.Empty;
return result;
}
Alors que la réponse de Bradley continue d'être parfaite sur les anciennes machines Windows classiques exécutant .NET Framework, Registry
est spécifique à Windows et échouera lors du portage de l'application vers un environnement non Windows .
Heureusement, il existe une très petite bibliothèque NuGet qui contient essentiellement une carte codée en dur des types MIME officiels et des extensions correspondantes sans aucune dépendance externe ici: https://github.com/samuelneff/MimeTypeMap . Il est disponible sur NuGet sous la forme MediaTypeMap . Après avoir installé le paquet appelant, c'est aussi simple que:
MimeTypeMap.GetExtension("audio/wav")
Pour le mettre dans votre exemple, vous pouvez simplement:
private static string GetExtension(string contentType)
{
return MimeTypes.MimeTypeMap.GetExtension(contentType);
}