ตรวจพบประเภท MIME ตามเนื้อหาไฟล์หรือนามสกุลไฟล์ แพ็คเกจ Nuget พร้อมใช้งาน รวมไฟล์ตัวอย่าง
โครงการนี้มีพื้นฐานมาจากไฟล์ Parsing /USR/Share/Mime/Magic (Kali Linux) ( ฐานข้อมูล MIME ) ตำแหน่งอาจแตกต่างกัน ข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างไฟล์นี้สามารถพบได้ที่นี่ ("ไฟล์ Magic Files")
ไฟล์นี้มีคำจำกัดความประเภท MIME ที่มีชุดกฎหลายชุดซึ่งใช้ซ้ำกับเนื้อหาของไฟล์ที่กำหนดเพื่อเดาประเภท MIME
รูปแบบไฟล์ต้นฉบับ ( เก่า ) ยากที่จะแก้ไขตามความต้องการของคุณ ฉันตัดสินใจที่จะย้ายไปยังรูปแบบไฟล์ JSON ( ใหม่ ) ด้วยความสามารถที่คล้ายคลึงกันและคุณสมบัติใหม่บางอย่าง รูปแบบใหม่สามารถแก้ไขและอัปเดตได้อย่างง่ายดายด้วยชุดกฎใหม่และคำจำกัดความประเภท MIME
รองรับรูปแบบฐานข้อมูลทั้งสอง รองรับการแปลงจากรูปแบบเก่าเป็นรูปแบบฐานข้อมูลใหม่ การตรวจจับโดยส่วนขยายสามารถใช้กับรูปแบบไฟล์ใหม่เท่านั้น เทมเพลตต้นฉบับและไฟล์ JSON จะ รวมเร็ว ๆ นี้
คำจำกัดความของ MIME แต่ละรายการมีรายการชุดกฎ แต่ละชุดกฎมีรายการลำดับชั้นของกฎ ชุดกฎ pseudocode:
// Level 0 rules: Rule 0
// Level 1 rules: Rule 1, Rule 2, Rule 3
// Level 2 rules: Rule 4
// Level 3 rules: Rule 5, Rule 6
// ...เมื่อใช้ชุดกฎนี้ผลลัพธ์จะถูกคำนวณในลักษณะดังต่อไปนี้:
// Result (boolean) = 0 && (1 || 2 || 3) && 4 && (5 || 6)...ตัวอย่างกฎ:
"Name" : "application/x-deb" ,
"Description" : "Debian package" ,
"Extensions" : [ "deb" ] ,
"RuleSet" : [
{
"Rule" : [
{
"Level" : 0 ,
"Offset" : 0 ,
"Range" : 0 ,
"Data" : "213C617263683E" ,
"DataUTF8" : "!<arch>"
} ,
{
"Level" : 1 ,
"Offset" : 8 ,
"Range" : 0 ,
"Data" : "64656269616E" ,
"DataUTF8" : "debian"
}
]
} , "Rule" : [ .. .
] .. . // Database File (new or old)
string MagicFile = Path . Combine ( Environment . CurrentDirectory , "magic" ) ;
using ( MimeMagicSharp . MimeMagicSharp ms = new MimeMagicSharp . MimeMagicSharp ( MimeMagicSharp . EMagicFileType . Json , MagicFile ) )
{
try
{
foreach ( MimeTypeGuess mimeTypeGuess in ms . AssumeMimeType ( EMimeTypeBy . Content ,
Path . Combine ( Environment . CurrentDirectory , "Newtonsoft.Json.xml" ) ) )
{
// Iterate over results
}
}
catch ( Exception Ex )
{
// Handle errors
}
}การแปลงจากรูปแบบดั้งเดิม (เก่า) เป็น JSON (ใหม่) รองรับ
MimeMagicSharp . MimeMagicSharp . ConvertFromOriginalToJson ( "magic_original" , "magic_json_convert_test" , out string ConvertError ) ; เพียง 4096 ไบต์แรกของไฟล์เท่านั้นที่อ่านในระหว่างขั้นตอนการตรวจจับ MIME คุณสามารถขยายขีด จำกัด นี้ในซอร์สโค้ดได้อย่างง่ายดาย
สร้างใน VS 2017
คุณสามารถใช้หรือแก้ไขแหล่งที่มาตามที่คุณต้องการ