يكتشف نوع MIME بناءً على محتوى الملف أو ملحق الملف. حزمة Nuget متوفرة. يتم تضمين ملفات العينة.
استند هذا المشروع في الأصل إلى تحليل ملف التحليل /usr/share/mime/magic (Kali Linux) ( قاعدة بيانات MIME ). قد يختلف الموقع. يمكن العثور على مزيد من المعلومات حول بنية الملف هنا (قسم "الملفات السحرية").
يحتوي هذا الملف على تعريفات نوع 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
يمكنك استخدام المصادر أو تعديلها كما تريد