沈阳网站关键词优化做的好吗,网站每年服务费,西安未央区网站建设,玉娇龙儿wordpressMyrmec 是什么#xff1f;Myrmec 是一个用于检测文件格式的库#xff0c;Myrmec不同于其它库或者手写检测代码#xff0c;Myrmec不依赖文件扩展名#xff08;在实际使用中#xff0c;你的用户很可能使用虚假的扩展名欺骗你的应用程序#xff09;#xff0c;Myrmec会检测… Myrmec 是什么Myrmec 是一个用于检测文件格式的库Myrmec不同于其它库或者手写检测代码Myrmec不依赖文件扩展名在实际使用中你的用户很可能使用虚假的扩展名欺骗你的应用程序Myrmec会检测文件的二进制头并在其元数据库中匹配来获得文件的格式。例如Jpg图片的二进制头是 FF D8 FF DB 那么Myrmec会匹配到这个文件头并获得两个结果--jpg和jpeg。如何使用首先安装 nuget 包 Install-Package Myrmec或者通过 DotnetCli dotnet add package Myrmec 编写匹配代码// 创建嗅探器Sniffer sniffer new Sniffer();// 使用元数据填充嗅探器sniffer.Populate(FileTypes.CommonFileTypes);// 获取要匹配文件的文件头一般20个字节就够了有的格式可能需要更长byte[] fileHead ReadFileHead();// 匹配并获取结果Liststring results sniffer.Match(fileHead)为什么结果是ListString许多时候一个文件格式会对应多个扩展名比如jpg。还有的时候多种文件格式都是一种文件格式比如 zip、apk、pptx 它们都是zip achive 所以当你匹配了一个zip文件那么你最少会获得3个扩展名。当结果是空时说明没有匹配到结果。 查询多个结果或者一个会有这样的情况文件格式A 的文件头是 ff,11,22 ,文件格式B 的 文件头是“ff,11,22,33”这时候你要匹配的文件头是ff,11,22,33,44那么它最多会匹配到这两个结果并返回他们包含的所有扩展名// 这会在匹配到第一个结果时就返回// default is falseListstring results sniffer.Match(fileHead,false);// 这会匹配到所有的结果Liststring results sniffer.Match(fileHead,true);添加自定义的文件头也许你创建了一种文件格式或者你所使用的文件格式不在元数据中这时你可以使用下面的代码将其加入元数据var data new byte[]{ 0x11, 0x22, 0x33};sniffer.Add(data, new[] { what, file, type });注意这个新添加的格式拥有3个扩展名。获取MimeType1 Liststring result sniffer.Match(head);2 string mimeType MimeTypes.GetMimeType(result.First()); 或者1 string mimeType MimeTypes.GetMimeType(png); 在下一个版本中获取MimeType将会被替换成string 的扩展方法。 元数据来源元数据来自维基百科 List of file signatures.RoadMap接下来要做的事就是支持 带有偏移量的 文件格式例如 ff,11,ff 起始偏移10字节以及 11,ff,??,??,??,11,??,fd 这种含有跳跃的文件格式。不过事实上他们两个是一种形式预计下一个版本就会发布对其的支持。支持 .net standard.现在是.net core 2在未来会调整到.net standardgithub地址https://github.com/rocketRobin/myrmecnuget地址https://www.nuget.org/packages/Myrmec/欢迎大家试用提出意见与建议 为什么github仓库是英文的作为一个中文开发者我没有在github仓库中使用中文因为我希望能够长久的开发这个项目并希望世界各地的开发者都能使用这个库或者参与开发为了此目的我在github上使用的是英文。原文地址: https://www.cnblogs.com/rocketRobin/p/8446273.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com