C# Get file extension by content type

PSSGCSim picture PSSGCSim · Apr 15, 2014 · Viewed 25.8k times · Source

How can I get file extension by content type ?

Example I know that file is "text/css" so extension will be ".css".

private static string GetExtension(string contentType)
{
    string ext = ".";

    { DETERMINATION CODE IN HERE }

    return ext;
}

Answer

Marcell Toth picture Marcell Toth · May 20, 2019

[2019] .NET Core / Standard compatible portable way

While Bradley's answer continues to be perfect on regular old Windows machines running .NET Framework, Registry is Windows-specific and will fail when porting the app to a non-Windows environment.

Fortunately there is a very small NuGet library that essentially contains a hardcoded map of the official MIME types and corresponding extensions without any external dependencies here: https://github.com/samuelneff/MimeTypeMap. It is available on NuGet as MediaTypeMap. After installing the package calling it is as simple as:

MimeTypeMap.GetExtension("audio/wav")

To put it into your example you can simply:

private static string GetExtension(string contentType)
{
    return MimeTypes.MimeTypeMap.GetExtension(contentType);
}