我怎样可以通过文件扩展名获取 MIME 类型?
我怎样可以通过文件扩展名获取 MIME 类型?
我对脚本进行了一些更新。以防万一有人需要。
function getMime(){
let ext = fileUpload.value.split('.')[1];
let myOutput = getMimeType(ext);
mimeType.value=myOutput;
}
function getMimeType(ext) {
if (!ext.startsWith(".")) {
ext = "." + ext;
}
let myList =
[
{"key": ".323", "value": "text/h323"},
{"key": ".3g2", "value": "video/3gpp2"},
{"key": ".3gp", "value": "video/3gpp"},
{"key": ".3gp2", "value": "video/3gpp2"},
{"key": ".3gpp", "value": "video/3gpp"},
{"key": ".7z", "value": "application/x-7z-compressed"},
{"key": ".aa", "value": "audio/audible"},
{"key": ".AAC", "value": "audio/aac"},
{"key": ".aaf", "value": "application/octet-stream"},
{"key": ".aax", "value": "audio/vnd.audible.aax"},
{"key": ".ac3", "value": "audio/ac3"},
{"key": ".aca", "value": "application/octet-stream"},
{"key": ".accda", "value": "application/msaccess.addin"},
{"key": ".accdb", "value": "application/msaccess"},
{"key": ".accdc", "value": "application/msaccess.cab"},
{"key": ".accde", "value": "application/msaccess"},
{"key": ".accdr", "value": "application/msaccess.runtime"},
{"key": ".accdt", "value": "application/msaccess"},
{"key": ".accdw", "value": "application/msaccess.webapplication"},
{"key": ".accft", "value": "application/msaccess.ftemplate"},
{"key": ".acx", "value": "application/internet-property-stream"},
{"key": ".AddIn", "value": "text/xml"},
{"key": ".ade", "value": "application/msaccess"},
{"key": ".adobebridge", "value": "application/x-bridge-url"},
{"key": ".adp", "value": "application/msaccess"},
{"key": ".ADT", "value": "audio/vnd.dlna.adts"},
{"key": ".ADTS", "value": "audio/aac"},
{"key": ".afm", "value": "application/octet-stream"},
{"key": ".ai", "value": "application/postscript"},
{"key": ".aif", "value": "audio/x-aiff"},
{"key": ".aifc", "value": "audio/aiff"},
{"key": ".aiff", "value": "audio/aiff"},
{"key": ".air", "value": "application/vnd.adobe.air-application-installer-package+zip"},
{"key": ".amc", "value": "application/x-mpeg"},
{"key": ".application", "value": "application/x-ms-application"},
{"key": ".art", "value": "image/x-jg"},
{"key": ".asa", "value": "application/xml"},
{"key": ".asax", "value": "application/xml"},
{"key": ".ascx", "value": "application/xml"},
{"key": ".asd", "value": "application/octet-stream"},
{"key": ".asf", "value": "video/x-ms-asf"},
{"key": ".ashx", "value": "application/xml"},
{"key": ".asi", "value": "application/octet-stream"},
{"key": ".asm", "value": "text/plain"},
{"key": ".asmx", "value": "application/xml"},
{"key": ".aspx", "value": "application/xml"},
{"key": ".asr", "value": "video/x-ms-asf"},
{"key": ".asx", "value": "video/x-ms-asf"},
{"key": ".atom", "value": "application/atom+xml"},
{"key": ".au", "value": "audio/basic"},
{"key": ".avi", "value": "video/x-msvideo"},
{"key": ".axs", "value": "application/olescript"},
{"key": ".bas", "value": "text/plain"},
{"key": ".bcpio", "value": "application/x-bcpio"},
{"key": ".bin", "value": "application/octet-stream"},
{"key": ".bmp", "value": "image/bmp"},
{"key": ".c", "value": "text/plain"},
{"key": ".cab", "value": "application/octet-stream"},
{"key": ".caf", "value": "audio/x-caf"},
{"key": ".calx", "value": "application/vnd.ms-office.calx"},
{"key": ".cat", "value": "application/vnd.ms-pki.seccat"},
{"key": ".cc", "value": "text/plain"},
{"key": ".cd", "value": "text/plain"},
{"key": ".cdda", "value": "audio/aiff"},
{"key": ".cdf", "value": "application/x-cdf"},
{"key": ".cer", "value": "application/x-x509-ca-cert"},
{"key": ".chm", "value": "application/octet-stream"},
{"key": ".class", "value": "application/x-java-applet"},
{"key": ".clp", "value": "application/x-msclip"},
{"key": ".cmx", "value": "image/x-cmx"},
{"key": ".cnf", "value": "text/plain"},
{"key": ".cod", "value": "image/cis-cod"},
{"key": ".config", "value": "application/xml"},
{"key": ".contact", "value": "text/x-ms-contact"},
{"key": ".coverage", "value": "application/xml"},
{"key": ".cpio", "value": "application/x-cpio"},
{"key": ".cpp", "value": "text/plain"},
{"key": ".crd", "value": "application/x-mscardfile"},
{"key": ".crl", "value": "application/pkix-crl"},
{"key": ".crt", "value": "application/x-x509-ca-cert"},
{"key": ".cs", "value": "text/plain"},
{"key": ".csdproj", "value": "text/plain"},
{"key": ".csh", "value": "application/x-csh"},
{"key": ".csproj", "value": "text/plain"},
{"key": ".css", "value": "text/css"},
{"key": ".csv", "value": "text/csv"},
{"key": ".cur", "value": "application/octet-stream"},
{"key": ".cxx", "value": "text/plain"},
{"key": ".dat", "value": "application/octet-stream"},
{"key": ".datasource", "value": "application/xml"},
{"key": ".dbproj", "value": "text/plain"},
{"key": ".dcr", "value": "application/x-director"},
{"key": ".def", "value": "text/plain"},
{"key": ".deploy", "value": "application/octet-stream"},
{"key": ".der", "value": "application/x-x509-ca-cert"},
{"key": ".dgml", "value": "application/xml"},
{"key": ".dib", "value": "image/bmp"},
{"key": ".dif", "value": "video/x-dv"},
{"key": ".dir", "value": "application/x-director"},
{"key": ".disco", "value": "text/xml"},
{"key": ".dll", "value": "application/x-msdownload"},
{"key": ".dll.config", "value": "text/xml"},
{"key": ".dlm", "value": "text/dlm"},
{"key": ".doc", "value": "application/msword"},
{"key": ".docm", "value": "application/vnd.ms-word.document.macroEnabled.12"},
{"key": ".docx", "value": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},
{"key": ".dot", "value": "application/msword"},
{"key": ".dotm", "value": "application/vnd.ms-word.template.macroEnabled.12"},
{"key": ".dotx", "value": "application/vnd.openxmlformats-officedocument.wordprocessingml.template"},
{"key": ".dsp", "value": "application/octet-stream"},
{"key": ".dsw", "value": "text/plain"},
{"key": ".dtd", "value": "text/xml"},
{"key": ".dtsConfig", "value": "text/xml"},
{"key": ".dv", "value": "video/x-dv"},
{"key": ".dvi", "value": "application/x-dvi"},
{"key": ".dwf", "value": "drawing/x-dwf"},
{"key": ".dwp", "value": "application/octet-stream"},
{"key": ".dxr", "value": "application/x-director"},
{"key": ".eml", "value": "message/rfc822"},
{"key": ".emz", "value": "application/octet-stream"},
{"key": ".eot", "value": "application/octet-stream"},
{"key": ".eps", "value": "application/postscript"},
{"key": ".etl", "value": "application/etl"},
{"key": ".etx", "value": "text/x-setext"},
{"key": ".evy", "value": "application/envoy"},
{"key": ".exe", "value": "application/octet-stream"},
{"key": ".exe.config", "value": "text/xml"},
{"key": ".fdf", "value": "application/vnd.fdf"},
{"key": ".fif", "value": "application/fractals"},
{"key": ".filters", "value": "Application/xml"},
{"key": ".fla", "value": "application/octet-stream"},
{"key": ".flr", "value": "x-world/x-vrml"},
{"key": ".flv", "value": "video/x-flv"},
{"key": ".fsscript", "value": "application/fsharp-script"},
{"key": ".fsx", "value": "application/fsharp-script"},
{"key": ".generictest", "value": "application/xml"},
{"key": ".gif", "value": "image/gif"},
{"key": ".group", "value": "text/x-ms-group"},
{"key": ".gsm", "value": "audio/x-gsm"},
{"key": ".gtar", "value": "application/x-gtar"},
{"key": ".gz", "value": "application/x-gzip"},
{"key": ".h", "value": "text/plain"},
{"key": ".hdf", "value": "application/x-hdf"},
{"key": ".hdml", "value": "text/x-hdml"},
{"key": ".hhc", "value": "application/x-oleobject"},
{"key": ".hhk", "value": "application/octet-stream"},
{"key": ".hhp", "value": "application/octet-stream"},
{"key": ".hlp", "value": "application/winhlp"},
{"key": ".hpp", "value": "text/plain"},
{"key": ".hqx", "value": "application/mac-binhex40"},
{"key": ".hta", "value": "application/hta"},
{"key": ".htc", "value": "text/x-component"},
{"key": ".htm", "value": "text/html"},
{"key": ".html", "value": "text/html"},
{"key": ".htt", "value": "text/webviewhtml"},
{"key": ".hxa", "value": "application/xml"},
{"key": ".hxc", "value": "application/xml"},
{"key": ".hxd", "value": "application/octet-stream"},
{"key": ".hxe", "value": "application/xml"},
{"key": ".hxf", "value": "application/xml"},
{"key": ".hxh", "value": "application/octet-stream"},
{"key": ".hxi", "value": "application/octet-stream"},
{"key": ".hxk", "value": "application/xml"},
{"key": ".hxq", "value": "application/octet-stream"},
{"key": ".hxr", "value": "application/octet-stream"},
{"key": ".hxs", "value": "application/octet-stream"},
{"key": ".hxt", "value": "text/html"},
{"key": ".hxv", "value": "application/xml"},
{"key": ".hxw", "value": "application/octet-stream"},
{"key": ".hxx", "value": "text/plain"},
{"key": ".i", "value": "text/plain"},
{"key": ".ico", "value": "image/x-icon"},
{"key": ".ics", "value": "application/octet-stream"},
{"key": ".idl", "value": "text/plain"},
{"key": ".ief", "value": "image/ief"},
{"key": ".iii", "value": "application/x-iphone"},
{"key": ".inc", "value": "text/plain"},
{"key": ".inf", "value": "application/octet-stream"},
{"key": ".inl", "value": "text/plain"},
{"key": ".ins", "value": "application/x-internet-signup"},
{"key": ".ipa", "value": "application/x-itunes-ipa"},
{"key": ".ipg", "value": "application/x-itunes-ipg"},
{"key": ".ipproj", "value": "text/plain"},
{"key": ".ipsw", "value": "application/x-itunes-ipsw"},
{"key": ".iqy", "value": "text/x-ms-iqy"},
{"key": ".isp", "value": "application/x-internet-signup"},
{"key": ".ite", "value": "application/x-itunes-ite"},
{"key": ".itlp", "value": "application/x-itunes-itlp"},
{"key": ".itms", "value": "application/x-itunes-itms"},
{"key": ".itpc", "value": "application/x-itunes-itpc"},
{"key": ".IVF", "value": "video/x-ivf"},
{"key": ".jar", "value": "application/java-archive"},
{"key": ".java", "value": "application/octet-stream"},
{"key": ".jck", "value": "application/liquidmotion"},
{"key": ".jcz", "value": "application/liquidmotion"},
{"key": ".jfif", "value": "image/pjpeg"},
{"key": ".jnlp", "value": "application/x-java-jnlp-file"},
{"key": ".jpb", "value": "application/octet-stream"},
{"key": ".jpe", "value": "image/jpeg"},
{"key": ".jpeg", "value": "image/jpeg"},
{"key": ".jpg", "value": "image/jpeg"},
{"key": ".js", "value": "application/x-javascript"},
{"key": ".json", "value": "application/json"},
{"key": ".jsx", "value": "text/jscript"},
{"key": ".jsxbin", "value": "text/plain"},
{"key": ".latex", "value": "application/x-latex"},
{"key": ".library-ms", "value": "application/windows-library+xml"},
{"key": ".lit", "value": "application/x-ms-reader"},
{"key": ".loadtest", "value": "application/xml"},
{"key": ".lpk", "value": "application/octet-stream"},
{"key": ".lsf", "value": "video/x-la-asf"},
{"key": ".lst", "value": "text/plain"},
{"key": ".lsx", "value": "video/x-la-asf"},
{"key": ".lzh", "value": "application/octet-stream"},
{"key": ".m13", "value": "application/x-msmediaview"},
{"key": ".m14", "value": "application/x-msmediaview"},
{"key": ".m1v", "value": "video/mpeg"},
{"key": ".m2t", "value": "video/vnd.dlna.mpeg-tts"},
{"key": ".m2ts", "value": "video/vnd.dlna.mpeg-tts"},
{"key": ".m2v", "value": "video/mpeg"},
{"key": ".m3u", "value": "audio/x-mpegurl"},
{"key": ".m3u8", "value": "audio/x-mpegurl"},
{"key": ".m4a", "value": "audio/m4a"},
{"key": ".m4b", "value": "audio/m4b"},
{"key": ".m4p", "value": "audio/m4p"},
{"key": ".m4r", "value": "audio/x-m4r"},
{"key": ".m4v", "value": "video/x-m4v"},
{"key": ".mac", "value": "image/x-macpaint"},
{"key": ".mak", "value": "text/plain"},
{"key": ".man", "value": "application/x-troff-man"},
{"key": ".manifest", "value": "application/x-ms-manifest"},
{"key": ".map", "value": "text/plain"},
{"key": ".master", "value": "application/xml"},
{"key": ".mda", "value": "application/msaccess"},
{"key": ".mdb", "value": "application/x-msaccess"},
{"key": ".mde", "value": "application/msaccess"},
{"key": ".mdp", "value": "application/octet-stream"},
{"key": ".me", "value": "application/x-troff-me"},
{"key": ".mfp", "value": "application/x-shockwave-flash"},
{"key": ".mht", "value": "message/rfc822"},
{"key": ".mhtml", "value": "message/rfc822"},
{"key": ".mid", "value": "audio/mid"},
{"key": ".midi", "value": "audio/mid"},
{"key": ".mix", "value": "application/octet-stream"},
{"key": ".mk", "value": "text/plain"},
{"key": ".mmf", "value": "application/x-smaf"},
{"key": ".mno", "value": "text/xml"},
{"key": ".mny", "value": "application/x-msmoney"},
{"key": ".mod", "value": "video/mpeg"},
{"key": ".mov", "value": "video/quicktime"},
{"key": ".movie", "value": "video/x-sgi-movie"},
{"key": ".mp2", "value": "video/mpeg"},
{"key": ".mp2v", "value": "video/mpeg"},
{"key": ".mp3", "value": "audio/mpeg"},
{"key": ".mp4", "value": "video/mp4"},
{"key": ".mp4v", "value": "video/mp4"},
{"key": ".mpa", "value": "video/mpeg"},
{"key": ".mpe", "value": "video/mpeg"},
{"key": ".mpeg", "value": "video/mpeg"},
{"key": ".mpf", "value": "application/vnd.ms-mediapackage"},
{"key": ".mpg", "value": "video/mpeg"},
{"key": ".mpp", "value": "application/vnd.ms-project"},
{"key": ".mpv2", "value": "video/mpeg"},
{"key": ".mqv", "value": "video/quicktime"},
{"key": ".ms", "value": "application/x-troff-ms"},
{"key": ".msi", "value": "application/octet-stream"},
{"key": ".mso", "value": "application/octet-stream"},
{"key": ".mts", "value": "video/vnd.dlna.mpeg-tts"},
{"key": ".mtx", "value": "application/xml"},
{"key": ".mvb", "value": "application/x-msmediaview"},
{"key": ".mvc", "value": "application/x-miva-compiled"},
{"key": ".mxp", "value": "application/x-mmxp"},
{"key": ".nc", "value": "application/x-netcdf"},
{"key": ".nsc", "value": "video/x-ms-asf"},
{"key": ".nws", "value": "message/rfc822"},
{"key": ".ocx", "value": "application/octet-stream"},
{"key": ".oda", "value": "application/oda"},
{"key": ".odc", "value": "text/x-ms-odc"},
{"key": ".odh", "value": "text/plain"},
{"key": ".odl", "value": "text/plain"},
{"key": ".odp", "value": "application/vnd.oasis.opendocument.presentation"},
{"key": ".ods", "value": "application/oleobject"},
{"key": ".odt", "value": "application/vnd.oasis.opendocument.text"},
{"key": ".webtest", "value": "application/xml"},
{"key": ".wiq", "value": "application/xml"},
{"key": ".wiz", "value": "application/msword"},
{"key": ".wks", "value": "application/vnd.ms-works"},
{"key": ".WLMP", "value": "application/wlmoviemaker"},
{"key": ".wlpginstall", "value": "application/x-wlpg-detect"},
{"key": ".wlpginstall3", "value": "application/x-wlpg3-detect"},
{"key": ".wm", "value": "video/x-ms-wm"},
{"key": ".wma", "value": "audio/x-ms-wma"},
{"key": ".wmd", "value": "application/x-ms-wmd"},
{"key": ".wmf", "value": "application/x-msmetafile"},
{"key": ".wml", "value": "text/vnd.wap.wml"},
{"key": ".wmlc", "value": "application/vnd.wap.wmlc"},
{"key": ".wmls", "value": "text/vnd.wap.wmlscript"},
{"key": ".wmlsc", "value": "application/vnd.wap.wmlscriptc"},
{"key": ".wmp", "value": "video/x-ms-wmp"},
{"key": ".wmv", "value": "video/x-ms-wmv"},
{"key": ".wmx", "value": "video/x-ms-wmx"},
{"key": ".wmz", "value": "application/x-ms-wmz"},
{"key": ".wpl", "value": "application/vnd.ms-wpl"},
{"key": ".wps", "value": "application/vnd.ms-works"},
{"key": ".wri", "value": "application/x-mswrite"},
{"key": ".wrl", "value": "x-world/x-vrml"},
{"key": ".wrz", "value": "x-world/x-vrml"},
{"key": ".wsc", "value": "text/scriptlet"},
{"key": ".wsdl", "value": "text/xml"},
{"key": ".wvx", "value": "video/x-ms-wvx"},
{"key": ".x", "value": "application/directx"},
{"key": ".xaf", "value": "x-world/x-vrml"},
{"key": ".xaml", "value": "application/xaml+xml"},
{"key": ".xap", "value": "application/x-silverlight-app"},
{"key": ".xbap", "value": "application/x-ms-xbap"},
{"key": ".xbm", "value": "image/x-xbitmap"},
{"key": ".xdr", "value": "text/plain"},
{"key": ".xht", "value": "application/xhtml+xml"},
{"key": ".xhtml", "value": "application/xhtml+xml"},
{"key": ".xla", "value": "application/vnd.ms-excel"},
{"key": ".xlam", "value": "application/vnd.ms-excel.addin.macroEnabled.12"},
{"key": ".xlc", "value": "application/vnd.ms-excel"},
{"key": ".xld", "value": "application/vnd.ms-excel"},
{"key": ".xlk", "value": "application/vnd.ms-excel"},
{"key": ".xll", "value": "application/vnd.ms-excel"},
{"key": ".xlm", "value": "application/vnd.ms-excel"},
{"key": ".xls", "value": "application/vnd.ms-excel"},
{"key": ".xlsb", "value": "application/vnd.ms-excel.sheet.binary.macroEnabled.12"},
{"key": ".xlsm", "value": "application/vnd.ms-excel.sheet.macroEnabled.12"},
{"key": ".xlsx", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},
{"key": ".xlt", "value": "application/vnd.ms-excel"},
{"key": ".xltm", "value": "application/vnd.ms-excel.template.macroEnabled.12"},
{"key": ".xltx", "value": "application/vnd.openxmlformats-officedocument.spreadsheetml.template"},
{"key": ".xlw", "value": "application/vnd.ms-excel"},
{"key": ".xml", "value": "text/xml"},
{"key": ".xmta", "value": "application/xml"},
{"key": ".xof", "value": "x-world/x-vrml"},
{"key": ".XOML", "value": "text/plain"},
{"key": ".xpm", "value": "image/x-xpixmap"},
{"key": ".xps", "value": "application/vnd.ms-xpsdocument"},
{"key": ".xrm-ms", "value": "text/xml"},
{"key": ".xsc", "value": "application/xml"},
{"key": ".xsd", "value": "text/xml"},
{"key": ".xsf", "value": "text/xml"},
{"key": ".xsl", "value": "text/xml"},
{"key": ".xslt", "value": "text/xml"},
{"key": ".xsn", "value": "application/octet-stream"},
{"key": ".xss", "value": "application/xml"},
{"key": ".xtp", "value": "application/octet-stream"},
{"key": ".xwd", "value": "image/x-xwindowdump"},
{"key": ".z", "value": "application/x-compress"},
{"key": ".zip", "value": "application/x-zip-compressed"}
]
let index = myList.map((o) => o.key).indexOf(ext);
let mime = myList[index]["value"];
return mime
}
<p><input id='fileUpload' type='file' name='fileUpload' onChange='getMime()'></p>
<p>MimeType: <input id='mimeType' type='text' name='mimeType'></p>
如果您不想添加附加依赖项但仍希望具有版本无关的请求,则可以将此答案中如何在不同.NET版本中获取MIME类型与此答案中多个.NET Framework版本的条件构建混合使用。
我做的第一件事是编辑我的项目文件。在最后一个构建定义之后,我按照第二个答案中所述添加了属性组:
<PropertyGroup>
<DefineConstants Condition=" !$(DefineConstants.Contains(';NET')) ">$(DefineConstants);$(TargetFrameworkVersion.Replace("v", "NET").Replace(".", ""))</DefineConstants>
<DefineConstants Condition=" $(DefineConstants.Contains(';NET')) ">$(DefineConstants.Remove($(DefineConstants.LastIndexOf(";NET"))));$(TargetFrameworkVersion.Replace("v", "NET").Replace(".", ""))</DefineConstants>
</PropertyGroup>
#if (NET10 || NET11 || NET20 || NET30 || NET35)
public static class MimeExtensionHelper
{
static object locker = new object();
static MethodInfo getMimeMappingMethodInfo;
static MimeExtensionHelper()
{
Type mimeMappingType = Assembly.GetAssembly(typeof(HttpRuntime)).GetType("System.Web.MimeMapping");
if (mimeMappingType == null)
throw new SystemException("Couldnt find MimeMapping type");
ConstructorInfo constructorInfo = mimeMappingType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
if (constructorInfo == null)
throw new SystemException("Couldnt find default constructor for MimeMapping");
mimeMapping = constructorInfo.Invoke(null);
if (mimeMapping == null)
throw new SystemException("Couldnt find MimeMapping");
getMimeMappingMethodInfo = mimeMappingType.GetMethod("GetMimeMapping", BindingFlags.Static | BindingFlags.NonPublic);
if (getMimeMappingMethodInfo == null)
throw new SystemException("Couldnt find GetMimeMapping method");
if (getMimeMappingMethodInfo.ReturnType != typeof(string))
throw new SystemException("GetMimeMapping method has invalid return type");
if (getMimeMappingMethodInfo.GetParameters().Length != 1 && getMimeMappingMethodInfo.GetParameters()[0].ParameterType != typeof(string))
throw new SystemException("GetMimeMapping method has invalid parameters");
}
public static string GetMimeType(string fileName)
{
lock (locker)
{
return (string)getMimeMappingMethodInfo.Invoke(null, new object[] { fileName });
}
}
}
#elif NET40
public static class MimeExtensionHelper
{
static object locker = new object();
static MethodInfo getMimeMappingMethodInfo;
static MimeExtensionHelper()
{
Type mimeMappingType = Assembly.GetAssembly(typeof(HttpRuntime)).GetType("System.Web.MimeMapping");
if (mimeMappingType == null)
throw new SystemException("Couldnt find MimeMapping type");
getMimeMappingMethodInfo = mimeMappingType.GetMethod("GetMimeMapping", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
if (getMimeMappingMethodInfo == null)
throw new SystemException("Couldnt find GetMimeMapping method");
if (getMimeMappingMethodInfo.ReturnType != typeof(string))
throw new SystemException("GetMimeMapping method has invalid return type");
if (getMimeMappingMethodInfo.GetParameters().Length != 1 && getMimeMappingMethodInfo.GetParameters()[0].ParameterType != typeof(string))
throw new SystemException("GetMimeMapping method has invalid parameters");
}
public static string GetMimeType(string fileName)
{
lock (locker)
{
return (string)getMimeMappingMethodInfo.Invoke(null, new object[] { fileName });
}
}
}
#else // .NET 4.5 or later
public static class MimeExtensionHelper
{
public static string GetMimeType(string fileName)
{
return MimeMapping.GetMimeMapping(fileName);
}
}
#endif
在.NET 4.5之前的版本中,静态MimeMapping
类托管了一个名为_mappingDictionary
(类型为MimeMapping.MimeMappingDictionaryBase
)的静态实例,您可以通过反射来请求该实例,以添加尚未支持的新MIME类型。
文件扩展名计算出的MIME类型并不总是正确的。
比如说,我可以将一个文件保存为.png格式,但实际上它的文件格式可能是"ImageFormat.jpeg"。
因此,在这种情况下,你所计算出来的文件大小会与原始文件不同... 可能会变成更大的文件。
如果你正在处理图像,则可以使用imagecodecInfo和ImageFormat。
我已经编制了一个声誉良好的来源列表,用于基于文件扩展名(目前)的mime类型和内容类型值。
nuget包在这里 https://www.nuget.org/packages/FTTLib.dll/
源代码在这里 https://github.com/brondavies/filetypetranslator/
此库的设计目标是:
如果有人能在Linux上使用类似于libmagic的功能,那将是检测文件类型比依赖文件扩展名更好的方法。
例如,如果我将文件从mypicture.jpg重命名为mypicture.txt,在Linux上,它仍将报告为图片,但在这里使用此方法,它将被报告为文本文件。
敬礼,Tomas
IANA 媒体类型
我希望微软能够整合他们的行业标准!对于其他人,有兴趣的:
离散类型
多部分类型
我想向那些感兴趣的人推荐阅读Mozilla页面上的MIME类型(IANA媒体类型)。它非常有启发性!
在代码方面,上述每个链接都有一个.csv文件下载:https://www.iana.org/assignments/media-types/application.csv
正如在这里已经指出的那样,字典或ConcurrentDictionary可能是下载和填充键值对字典的一个好主意。
private string GetMimeType(string sFileName)
{
// Get file extension and if it is empty, return unknown
string sExt = Path.GetExtension(sFileName);
if (string.IsNullOrEmpty(sExt)) return "Unknown file type";
// Default type is "EXT File"
string mimeType = string.Format("{0} File", sExt.ToUpper().Replace(".", ""));
// Open the registry key for the extension under HKEY_CLASSES_ROOT and return default if it doesn't exist
Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(sExt);
if (regKey == null) return mimeType;
// Get the "(Default)" value and re-open the key for that value
string sSubType = regKey.GetValue("").ToString();
regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(sSubType);
// If it exists, get the "(Default)" value of the new key
if (regKey?.GetValue("") != null) mimeType = regKey.GetValue("").ToString();
// Return the value
return mimeType;
}
现在对于所有已注册的文件类型和未注册或通用文件类型(如JPG等),它对我来说都运行良好。
当然,为了将通用的完整性、动态性和可移植性与最小依赖相结合
您可以将Samuel Neff的静态字典与平台特定的查询结合起来,例如Bryan Denny所做的那样。
例如,在Linux命令行工具“xdg-mime”下可能会执行后半部分。
FileExtension
处理文件扩展名而不是 Mime。用户可以更改文件扩展名,因此请检查 Mime。代码示例通过文件扩展名关联 Mime,这是错误的且无法正常工作。
需要获取 contenttype
文件并检查表格 Mime contetType
是否与文件扩展名相符。现在,如何获取文件的 ContentType
?
使用 FileUpload 如下:FileUpload.PostedFile.ContentType;
现在,如果我已经有了文件,如何获取它的 ContentType?
import org.springframework.boot.web.server.MimeMappings;
MimeMappings mm=new MimeMappings();
String mimetype = mm.get(fileExtension);
System.out.println(mimetype);