火焰木种子每亩地用多少斤? 当前位置:首页>火焰木种子每亩地用多少斤?>正文

火焰木种子每亩地用多少斤?

发布时间:2019-05-20

原标题:在.NetCore中使用Myrmec检测文件真实格式

Myrmec 是什么?

Myrmec 是一个用于检测文件格式的库,Myrmec不同于其它库或者手写检测代码,Myrmec不依赖文件扩展名(在实际使用中,你的用户很可能使用虚假的扩展名欺骗你的应用程序),Myrmec会检测文件的二进制头,并在其元数据库中匹配来获得文件的格式。

例如Jpg图片的二进制头是 "FF D8 FF DB" 那么Myrmec会匹配到这个文件头,并获得两个结果--"jpg"和"jpeg"。

如何使用

首先安装 nuget 包

 Install-Package Myrmec

或者通过 DotnetCli

 dotnet add package Myrmec 

编写匹配代码

 1 // 创建嗅探器
 2 Sniffer sniffer = new Sniffer();
 3 
 4 // 使用元数据填充嗅探器
 5 sniffer.Populate(FileTypes.CommonFileTypes);
 6 
 7 // 获取要匹配文件的文件头,一般20个字节就够了,有的格式可能需要更长
 8 byte[] fileHead = ReadFileHead();
 9 
10 // 匹配并获取结果
11 List<string> results = sniffer.Match(fileHead)

为什么结果是List<String>?

许多时候一个文件格式会对应多个扩展名,比如jpg。还有的时候多种文件格式都是一种文件格式,比如 zip、apk、pptx 它们都是zip achive ,所以当你匹配了一个zip文件,那么你最少会获得3个扩展名。当结果是空时,说明没有匹配到结果。

 

查询多个结果或者一个

会有这样的情况:文件格式A 的文件头是 "ff,11,22" ,文件格式B 的 文件头是“ff,11,22,33”,这时候你要匹配的文件头是"ff,11,22,33,44",那么它最多会匹配到这两个结果,并返回他们包含的所有扩展名

1 // 这会在匹配到第一个结果时就返回
2 // default is false
3 List<string> results = sniffer.Match(fileHead,false);
4 
5 // 这会匹配到所有的结果
6 List<string> results = sniffer.Match(fileHead,true);

添加自定义的文件头

也许你创建了一种文件格式,或者你所使用的文件格式不在元数据中,这时你可以使用下面的代码将其加入元数据:

1 var data = new byte[]
2 {
3     0x11,
4     0x22,
5     0x33
6 };
7 sniffer.Add(data, new[] { "what", "file", "type" });

注意这个新添加的格式拥有3个扩展名。

获取MimeType

1 List<string> 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 standard

github地址:https://github.com/rocketRobin/myrmec

nuget地址:https://www.nuget.org/packages/Myrmec/

欢迎大家试用,提出意见与建议

 

为什么github仓库是英文的?

作为一个中文开发者,我没有在github仓库中使用中文,因为我希望能够长久的开发这个项目,并希望世界各地的开发者都能使用这个库,或者参与开发,为了此目的,我在github上使用的是英文。

当前文章:http://thrksw.com/news/20190225337.html

发布时间:2019-05-20 03:19:52

月季树河南可以栽吗? 2016下半年最新红叶石楠小苗价格表汇总 哪有4米、5米、6米高的黑松,听说沭阳的树好、价好而且人还挺实诚 4月份适合播大麦吗? 白三叶种子报价哪家准确? 湖北适合种植大吴风草吗? 大吴风草从播种到开花需要多久? 野菊花耐水湿吗? 内蒙古哪里有卖锦鸡儿种子的? 党参种子什么温度发芽最好?

66843 37277 91219 60430 69628 36333 81520 94125 83432 25665 53650 11412 56086 47768 91792 14929 86123 20480 87079 58695 47246 95342 63627

责任编辑:石通

随机推荐