Cyotek Development Bloghttps://devblog.cyotek.com/tag/mime-type/atom.xml2012-01-24T16:52:06ZSnippet: Mime types and file extensionsurn:uuid:a46c77ea-4d64-4380-b756-59e4b84875ae2012-01-24T16:52:06Z2010-04-04T17:17:55Z<p>If you have a mime type and you want to find the default
extension for it, you can get this from the <code>Extension</code> value in
the following registry key:</p>
<figure class="lang-text highlight"><figcaption><span>text</span></figcaption><pre class="code">
HKEY_CLASSES_ROOT\MIME\Database\Content Type\&lt;mime type&gt;
</pre>
</figure>
<figure class="lang-csharp highlight"><figcaption><span>csharp</span></figcaption><pre class="code">
<span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">string</span> GetDefaultExtension<span class="symbol">(</span><span class="keyword">string</span> mimeType<span class="symbol">)</span>
<span class="symbol">{</span>
 <span class="keyword">string</span> result<span class="symbol">;</span>
 RegistryKey key<span class="symbol">;</span>
 <span class="keyword">object</span> value<span class="symbol">;</span>

 key <span class="symbol">=</span> Registry<span class="symbol">.</span>ClassesRoot<span class="symbol">.</span>OpenSubKey<span class="symbol">(</span><span class="string">@&quot;MIME\Database\Content Type\&quot;</span> <span class="symbol">+</span> mimeType<span class="symbol">,</span> <span class="keyword">false</span><span class="symbol">)</span><span class="symbol">;</span>
 value <span class="symbol">=</span> key <span class="symbol">!=</span> <span class="keyword">null</span> <span class="symbol">?</span> key<span class="symbol">.</span>GetValue<span class="symbol">(</span><span class="string">&quot;Extension&quot;</span><span class="symbol">,</span> <span class="keyword">null</span><span class="symbol">)</span> <span class="symbol">:</span> <span class="keyword">null</span><span class="symbol">;</span>
 result <span class="symbol">=</span> value <span class="symbol">!=</span> <span class="keyword">null</span> <span class="symbol">?</span> value<span class="symbol">.</span>ToString<span class="symbol">(</span><span class="symbol">)</span> <span class="symbol">:</span> <span class="keyword">string</span><span class="symbol">.</span>Empty<span class="symbol">;</span>

 <span class="keyword">return</span> result<span class="symbol">;</span>
<span class="symbol">}</span>
</pre>
</figure>
<p>One the other hand, if you have a file extension and you want to
know what that mime type is, you can get that via the <code>Content Type</code> value of this key:</p>
<figure class="lang-text highlight"><figcaption><span>text</span></figcaption><pre class="code">
HKEY_CLASSES_ROOT\&lt;extension&gt;
</pre>
</figure>
<figure class="lang-csharp highlight"><figcaption><span>csharp</span></figcaption><pre class="code">
<span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">string</span> GetMimeTypeFromExtension<span class="symbol">(</span><span class="keyword">string</span> extension<span class="symbol">)</span>
<span class="symbol">{</span>
 <span class="keyword">string</span> result<span class="symbol">;</span>
 RegistryKey key<span class="symbol">;</span>
 <span class="keyword">object</span> value<span class="symbol">;</span>

 <span class="keyword">if</span> <span class="symbol">(</span><span class="symbol">!</span>extension<span class="symbol">.</span>StartsWith<span class="symbol">(</span><span class="string">&quot;.&quot;</span><span class="symbol">)</span><span class="symbol">)</span>
 extension <span class="symbol">=</span> <span class="string">&quot;.&quot;</span> <span class="symbol">+</span> extension<span class="symbol">;</span>

 key <span class="symbol">=</span> Registry<span class="symbol">.</span>ClassesRoot<span class="symbol">.</span>OpenSubKey<span class="symbol">(</span>extension<span class="symbol">,</span> <span class="keyword">false</span><span class="symbol">)</span><span class="symbol">;</span>
 value <span class="symbol">=</span> key <span class="symbol">!=</span> <span class="keyword">null</span> <span class="symbol">?</span> key<span class="symbol">.</span>GetValue<span class="symbol">(</span><span class="string">&quot;Content Type&quot;</span><span class="symbol">,</span> <span class="keyword">null</span><span class="symbol">)</span> <span class="symbol">:</span> <span class="keyword">null</span><span class="symbol">;</span>
 result <span class="symbol">=</span> value <span class="symbol">!=</span> <span class="keyword">null</span> <span class="symbol">?</span> value<span class="symbol">.</span>ToString<span class="symbol">(</span><span class="symbol">)</span> <span class="symbol">:</span> <span class="keyword">string</span><span class="symbol">.</span>Empty<span class="symbol">;</span>

 <span class="keyword">return</span> result<span class="symbol">;</span>
<span class="symbol">}</span>
</pre>
</figure>
<h2 id="update-history">Update History</h2>
<ul>
<li>2010-04-04 - First published</li>
<li>2020-11-21 - Updated formatting</li>
</ul>

<p><small>
All content <a href="https://devblog.cyotek.com/copyright-and-trademarks">Copyright (c) by Cyotek Ltd</a> or its respective writers. Permission to reproduce news and web log entries and other RSS feed content in unmodified form without notice is granted provided they are not used to endorse or promote any products or opinions (other than what was expressed by the author) and without taking them out of context. Written permission from the copyright owner must be obtained for everything else.<br />Original URL of this content is https://devblog.cyotek.com/post/mime-types-and-file-extensions .
</small></p>Richard Mosshttps://www.cyotek.com/richard.moss@cyotek.com