.NET获取文件的MIME类型(Content Type)

获取文件的MIME类型有很多方法,闲话少絮,直接进入主题,下面是使用C#获取文件的的各种方法。

第一种:这种获取MIME类型(Content Type)的方法需要在 4.5之后才能够支持,但是非常简单。

:
code
1
2
3
4
5
6
7
8
9
10
// 需要先行引入System.Web
// 之后可以直接使用MimeMapping类的静态方法获取文件的MIME类型
 
string file = @"mimetype.txt";
string contentType = MimeMapping.GetMimeMapping(file);
Console.WriteLine("{0}'s MIME TYPE:{1}", file, contentType);
// Console output:
/*
mimetype.txt's Mime Type: text/plain
*/

优点:方便快捷

缺点:只能在.NET 4.5之后使用

如果没有的MIME TYPE将会返回:

application/octet-stream

第二种:直接在系统中通过文件的后缀获取文件的

code
1
2
3
4
5
6
7
8
9
10
11
12
// 自定义一个方法
// 通过系统中的Content Type来获取MIME TYPE
public static string GetMimeType(string fileName)
{
    string mimeType = "application/unknown";
    string ext = Path.GetExtension(fileName).ToLower();
    RegistryKey regKey = Registry.ClassesRoot.OpenSubKey(ext);
    if (regKey != null && regKey.GetValue("Content Type") != null){
        mimeType = regKey.GetValue("Content Type").ToString();
    }
    return mimeType;
}

 优点:

1. 直接快速

2. 没有.NET的版本限制;

缺点:

1. 需要有访问注册表的权限;

2. 获取的Content Type范围受系统环境约束。

这个方法在没有找到对应的MIME Type时,返回的是application/unknow,当然,你也可以自己定义其他任何返回值。

第三种: 自己动手写代码,将MimeType写成Mapping类,需要的时候直接使用。

code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
// 通过自己定义一个静态类
// 将所有的Content Type都扔进去吧
// 调用的时候直接调用静态方法即可。
public static class MimeMapping
{
    private static Hashtable _mimeMappingTable;
 
    private static void AddMimeMapping(string extension, string MimeType)
    {
        MimeMapping._mimeMappingTable.Add(extension, MimeType);
    }
 
    public static string GetMimeMapping(string FileName)
    {
        string text = null;
        int num = FileName.LastIndexOf('.');
        if (0 < num && num > FileName.LastIndexOf('\'))
        {
            text = (string)MimeMapping._mimeMappingTable[FileName.Substring(num)];
        }
        if (text == null)
        {
            text = (string)MimeMapping._mimeMappingTable[".*"];
        }
        return text;
    }
 
    static MimeMapping()
    {
        MimeMapping._mimeMappingTable = new Hashtable(190, StringComparer.CurrentCultureIgnoreCase);
        MimeMapping.AddMimeMapping(".323""text/h323");
        MimeMapping.AddMimeMapping(".asx""video/x-ms-asf");
        MimeMapping.AddMimeMapping(".acx""application/internet-property-stream");
        MimeMapping.AddMimeMapping(".ai""application/postscript");
        MimeMapping.AddMimeMapping(".aif""audio/x-aiff");
        MimeMapping.AddMimeMapping(".aiff""audio/aiff");
        MimeMapping.AddMimeMapping(".axs""application/olescript");
        MimeMapping.AddMimeMapping(".aifc""audio/aiff");
        MimeMapping.AddMimeMapping(".asr""video/x-ms-asf");
        MimeMapping.AddMimeMapping(".avi""video/x-msvideo");
        MimeMapping.AddMimeMapping(".asf""video/x-ms-asf");
        MimeMapping.AddMimeMapping(".au""audio/basic");
        MimeMapping.AddMimeMapping(".application""application/x-ms-application");
        MimeMapping.AddMimeMapping(".bin""application/octet-stream");
        MimeMapping.AddMimeMapping(".bas""text/plain");
        MimeMapping.AddMimeMapping(".bcpio""application/x-bcpio");
        MimeMapping.AddMimeMapping(".bmp""image/bmp");
        MimeMapping.AddMimeMapping(".cdf""application/x-cdf");
        MimeMapping.AddMimeMapping(".cat""application/vndms-pkiseccat");
        MimeMapping.AddMimeMapping(".crt""application/x-x509-ca-cert");
        MimeMapping.AddMimeMapping(".c""text/plain");
        MimeMapping.AddMimeMapping(".css""text/css");
        MimeMapping.AddMimeMapping(".cer""application/x-x509-ca-cert");
        MimeMapping.AddMimeMapping(".crl""application/pkix-crl");
        MimeMapping.AddMimeMapping(".cmx""image/x-cmx");
        MimeMapping.AddMimeMapping(".csh""application/x-csh");
        MimeMapping.AddMimeMapping(".cod""image/cis-cod");
        MimeMapping.AddMimeMapping(".cpio""application/x-cpio");
        MimeMapping.AddMimeMapping(".clp""application/x-msclip");
        MimeMapping.AddMimeMapping(".crd""application/x-mscardfile");
        MimeMapping.AddMimeMapping(".deploy""application/octet-stream");
        MimeMapping.AddMimeMapping(".dll""application/x-msdownload");
        MimeMapping.AddMimeMapping(".dot""application/msword");
        MimeMapping.AddMimeMapping(".doc""application/msword");
        MimeMapping.AddMimeMapping(".dvi""application/x-dvi");
        MimeMapping.AddMimeMapping(".dir""application/x-director");
        MimeMapping.AddMimeMapping(".dxr""application/x-director");
        MimeMapping.AddMimeMapping(".der""application/x-x509-ca-cert");
        MimeMapping.AddMimeMapping(".dib""image/bmp");
        MimeMapping.AddMimeMapping(".dcr""application/x-director");
        MimeMapping.AddMimeMapping(".disco""text/xml");
        MimeMapping.AddMimeMapping(".exe""application/octet-stream");
        MimeMapping.AddMimeMapping(".etx""text/x-setext");
        MimeMapping.AddMimeMapping(".evy""application/envoy");
        MimeMapping.AddMimeMapping(".eml""message/rfc822");
        MimeMapping.AddMimeMapping(".eps""application/postscript");
        MimeMapping.AddMimeMapping(".flr""x-world/x-vrml");
        MimeMapping.AddMimeMapping(".fif""application/fractals");
        MimeMapping.AddMimeMapping(".gtar""application/x-gtar");
        MimeMapping.AddMimeMapping(".gif""image/gif");
        MimeMapping.AddMimeMapping(".gz""application/x-gzip");
        MimeMapping.AddMimeMapping(".hta""application/hta");
        MimeMapping.AddMimeMapping(".htc""text/x-component");
        MimeMapping.AddMimeMapping(".htt""text/webviewhtml");
        MimeMapping.AddMimeMapping(".h""text/plain");
        MimeMapping.AddMimeMapping(".hdf""application/x-hdf");
        MimeMapping.AddMimeMapping(".hlp""application/winhlp");
        MimeMapping.AddMimeMapping(".html""text/html");
        MimeMapping.AddMimeMapping(".htm""text/html");
        MimeMapping.AddMimeMapping(".hqx""application/mac-binhex40");
        MimeMapping.AddMimeMapping(".isp""application/x-internet-signup");
        MimeMapping.AddMimeMapping(".iii""application/x-iphone");
        MimeMapping.AddMimeMapping(".ief""image/ief");
        MimeMapping.AddMimeMapping(".ivf""video/x-ivf");
        MimeMapping.AddMimeMapping(".ins""application/x-internet-signup");
        MimeMapping.AddMimeMapping(".ico""image/x-icon");
        MimeMapping.AddMimeMapping(".jpg""image/jpeg");
        MimeMapping.AddMimeMapping(".jfif""image/pjpeg");
        MimeMapping.AddMimeMapping(".jpe""image/jpeg");
        MimeMapping.AddMimeMapping(".jpeg""image/jpeg");
        MimeMapping.AddMimeMapping(".js""application/x-javascript");
        MimeMapping.AddMimeMapping(".lsx""video/x-la-asf");
        MimeMapping.AddMimeMapping(".latex""application/x-latex");
        MimeMapping.AddMimeMapping(".lsf""video/x-la-asf");
        MimeMapping.AddMimeMapping(".manifest""application/x-ms-manifest");
        MimeMapping.AddMimeMapping(".mhtml""message/rfc822");
        MimeMapping.AddMimeMapping(".mny""application/x-msmoney");
        MimeMapping.AddMimeMapping(".mht""message/rfc822");
        MimeMapping.AddMimeMapping(".mid""audio/mid");
        MimeMapping.AddMimeMapping(".mpv2""video/mpeg");
        MimeMapping.AddMimeMapping(".man""application/x-troff-man");
        MimeMapping.AddMimeMapping(".mvb""application/x-msmediaview");
        MimeMapping.AddMimeMapping(".mpeg""video/mpeg");
        MimeMapping.AddMimeMapping(".m3u""audio/x-mpegurl");
        MimeMapping.AddMimeMapping(".mdb""application/x-msaccess");
        MimeMapping.AddMimeMapping(".mpp""application/vnd.ms-project");
        MimeMapping.AddMimeMapping(".m1v""video/mpeg");
        MimeMapping.AddMimeMapping(".mpa""video/mpeg");
        MimeMapping.AddMimeMapping(".me""application/x-troff-me");
        MimeMapping.AddMimeMapping(".m13""application/x-msmediaview");
        MimeMapping.AddMimeMapping(".movie""video/x-sgi-movie");
        MimeMapping.AddMimeMapping(".m14""application/x-msmediaview");
        MimeMapping.AddMimeMapping(".mpe""video/mpeg");
        MimeMapping.AddMimeMapping(".mp2""video/mpeg");
        MimeMapping.AddMimeMapping(".mov""video/quicktime");
        MimeMapping.AddMimeMapping(".mp3""audio/mpeg");
        MimeMapping.AddMimeMapping(".mpg""video/mpeg");
        MimeMapping.AddMimeMapping(".ms""application/x-troff-ms");
        MimeMapping.AddMimeMapping(".nc""application/x-netcdf");
        MimeMapping.AddMimeMapping(".nws""message/rfc822");
        MimeMapping.AddMimeMapping(".oda""application/oda");
        MimeMapping.AddMimeMapping(".ods""application/oleobject");
        MimeMapping.AddMimeMapping(".pmc""application/x-perfmon");
        MimeMapping.AddMimeMapping(".p7r""application/x-pkcs7-certreqresp");
        MimeMapping.AddMimeMapping(".p7b""application/x-pkcs7-certificates");
        MimeMapping.AddMimeMapping(".p7s""application/pkcs7-signature");
        MimeMapping.AddMimeMapping(".pmw""application/x-perfmon");
        MimeMapping.AddMimeMapping(".ps""application/postscript");
        MimeMapping.AddMimeMapping(".p7c""application/pkcs7-mime");
        MimeMapping.AddMimeMapping(".pbm""image/x-portable-bitmap");
        MimeMapping.AddMimeMapping(".ppm""image/x-portable-pixmap");
        MimeMapping.AddMimeMapping(".pub""application/x-mspublisher");
        MimeMapping.AddMimeMapping(".pnm""image/x-portable-anymap");
        MimeMapping.AddMimeMapping(".png""image/png");
        MimeMapping.AddMimeMapping(".pml""application/x-perfmon");
        MimeMapping.AddMimeMapping(".p10""application/pkcs10");
        MimeMapping.AddMimeMapping(".pfx""application/x-pkcs12");
        MimeMapping.AddMimeMapping(".p12""application/x-pkcs12");
        MimeMapping.AddMimeMapping(".pdf""application/pdf");
        MimeMapping.AddMimeMapping(".pps""application/vnd.ms-powerpoint");
        MimeMapping.AddMimeMapping(".p7m""application/pkcs7-mime");
        MimeMapping.AddMimeMapping(".pko""application/vndms-pkipko");
        MimeMapping.AddMimeMapping(".ppt""application/vnd.ms-powerpoint");
        MimeMapping.AddMimeMapping(".pmr""application/x-perfmon");
        MimeMapping.AddMimeMapping(".pma""application/x-perfmon");
        MimeMapping.AddMimeMapping(".pot""application/vnd.ms-powerpoint");
        MimeMapping.AddMimeMapping(".prf""application/pics-rules");
        MimeMapping.AddMimeMapping(".pgm""image/x-portable-graymap");
        MimeMapping.AddMimeMapping(".qt""video/quicktime");
        MimeMapping.AddMimeMapping(".ra""audio/x-pn-realaudio");
        MimeMapping.AddMimeMapping(".rgb""image/x-rgb");
        MimeMapping.AddMimeMapping(".ram""audio/x-pn-realaudio");
        MimeMapping.AddMimeMapping(".rmi""audio/mid");
        MimeMapping.AddMimeMapping(".ras""image/x-cmu-raster");
        MimeMapping.AddMimeMapping(".roff""application/x-troff");
        MimeMapping.AddMimeMapping(".rtf""application/rtf");
        MimeMapping.AddMimeMapping(".rtx""text/richtext");
        MimeMapping.AddMimeMapping(".sv4crc""application/x-sv4crc");
        MimeMapping.AddMimeMapping(".spc""application/x-pkcs7-certificates");
        MimeMapping.AddMimeMapping(".setreg""application/set-registration-initiation");
        MimeMapping.AddMimeMapping(".snd""audio/basic");
        MimeMapping.AddMimeMapping(".stl""application/vndms-pkistl");
        MimeMapping.AddMimeMapping(".setpay""application/set-payment-initiation");
        MimeMapping.AddMimeMapping(".stm""text/html");
        MimeMapping.AddMimeMapping(".shar""application/x-shar");
        MimeMapping.AddMimeMapping(".sh""application/x-sh");
        MimeMapping.AddMimeMapping(".sit""application/x-stuffit");
        MimeMapping.AddMimeMapping(".spl""application/futuresplash");
        MimeMapping.AddMimeMapping(".sct""text/scriptlet");
        MimeMapping.AddMimeMapping(".scd""application/x-msschedule");
        MimeMapping.AddMimeMapping(".sst""application/vndms-pkicertstore");
        MimeMapping.AddMimeMapping(".src""application/x-wais-source");
        MimeMapping.AddMimeMapping(".sv4cpio""application/x-sv4cpio");
        MimeMapping.AddMimeMapping(".tex""application/x-tex");
        MimeMapping.AddMimeMapping(".tgz""application/x-compressed");
        MimeMapping.AddMimeMapping(".t""application/x-troff");
        MimeMapping.AddMimeMapping(".tar""application/x-tar");
        MimeMapping.AddMimeMapping(".tr""application/x-troff");
        MimeMapping.AddMimeMapping(".tif""image/tiff");
        MimeMapping.AddMimeMapping(".txt""text/plain");
        MimeMapping.AddMimeMapping(".texinfo""application/x-texinfo");
        MimeMapping.AddMimeMapping(".trm""application/x-msterminal");
        MimeMapping.AddMimeMapping(".tiff""image/tiff");
        MimeMapping.AddMimeMapping(".tcl""application/x-tcl");
        MimeMapping.AddMimeMapping(".texi""application/x-texinfo");
        MimeMapping.AddMimeMapping(".tsv""text/tab-separated-values");
        MimeMapping.AddMimeMapping(".ustar""application/x-ustar");
        MimeMapping.AddMimeMapping(".uls""text/iuls");
        MimeMapping.AddMimeMapping(".vcf""text/x-vcard");
        MimeMapping.AddMimeMapping(".wps""application/vnd.ms-works");
        MimeMapping.AddMimeMapping(".wav""audio/wav");
        MimeMapping.AddMimeMapping(".wrz""x-world/x-vrml");
        MimeMapping.AddMimeMapping(".wri""application/x-mswrite");
        MimeMapping.AddMimeMapping(".wks""application/vnd.ms-works");
        MimeMapping.AddMimeMapping(".wmf""application/x-msmetafile");
        MimeMapping.AddMimeMapping(".wcm""application/vnd.ms-works");
        MimeMapping.AddMimeMapping(".wrl""x-world/x-vrml");
        MimeMapping.AddMimeMapping(".wdb""application/vnd.ms-works");
        MimeMapping.AddMimeMapping(".wsdl""text/xml");
        MimeMapping.AddMimeMapping(".xap""application/x-silverlight-app");
        MimeMapping.AddMimeMapping(".xml""text/xml");
        MimeMapping.AddMimeMapping(".xlm""application/vnd.ms-excel");
        MimeMapping.AddMimeMapping(".xaf""x-world/x-vrml");
        MimeMapping.AddMimeMapping(".xla""application/vnd.ms-excel");
        MimeMapping.AddMimeMapping(".xls""application/vnd.ms-excel");
        MimeMapping.AddMimeMapping(".xof""x-world/x-vrml");
        MimeMapping.AddMimeMapping(".xlt""application/vnd.ms-excel");
        MimeMapping.AddMimeMapping(".xlc""application/vnd.ms-excel");
        MimeMapping.AddMimeMapping(".xsl""text/xml");
        MimeMapping.AddMimeMapping(".xbm""image/x-xbitmap");
        MimeMapping.AddMimeMapping(".xlw""application/vnd.ms-excel");
        MimeMapping.AddMimeMapping(".xpm""image/x-xpixmap");
        MimeMapping.AddMimeMapping(".xwd""image/x-xwindowdump");
        MimeMapping.AddMimeMapping(".xsd""text/xml");
        MimeMapping.AddMimeMapping(".z""application/x-compress");
        MimeMapping.AddMimeMapping(".zip""application/x-zip-compressed");
        MimeMapping.AddMimeMapping(".*""application/octet-stream");
    }
}
 
//需要调用的时候
string file = @"MimeType.txt";
string contentType = MimeMapping.GetMimeMapping(file);
Console。WriteLine("{0}'s MIME TYPE: {1}", file, contentType);
// ~~~~

优点:

1. MIME TYPE获取方便,无权限干扰;

2. 可以随时添加新的MIME类型(Content Type)。

原文地址:https://www.cnblogs.com/zcm123/p/7793251.html