البحث عن امتدادات الملفات حسب نوع MIME
حوّلوا نوع محتوى MIME إلى امتدادات الملفات التي يتوقعها المستخدمون والبرامج عادةً.
شغّل الأداة مجانًا
تقبل أداة البحث قيماً مثل application/json وimage/jpeg وtext/html; charset=utf-8، وتوحّد حالة الأحرف، وتحذف معلمات MIME، ثم تعيد الامتداد المفضل وجميع البدائل الشائعة في جدولها المدمج. تفيد هذه العملية عندما يحدد ترويس الاستجابة أو سجل الرفع أو URI للبيانات نوع الوسائط، من دون توفير اسم ملف موثوق.
حوّلوا نوع المحتوى إلى لاحقة ملف عملية
كثيراً ما تعرّف استجابات HTTP ومرفقات البريد ومخازن الكائنات ومعرّفات URI للبيانات الحمولة بواسطة نوع MIME، بينما تترك اسم الملف فارغاً أو غير موثوق. تمنح هذه الأداة تطبيقكم لاحقة عملية. أرسلوا قيمة بالصيغة المعتادة نوع/نوع فرعي، مثل image/jpeg، فتحصلون على امتداد أساسي وقائمة مرتبة بالبدائل المعروفة. تمثل القيمة الأساسية الخيار الشائع عند إنشاء اسم، أما القائمة الكاملة فتساعدكم على مقارنة اسم موجود أو عرض الصيغ المقبولة. تعاد الامتدادات من دون نقطة في البداية كي تتمكنوا من ضمها أو مقارنتها أو تنسيقها وفق قواعد التسمية لديكم. لا تفحص الخدمة وحدات البايت ولا تزعم أن الترويسة تثبت صحة الملف. إنها تنفذ فقط العملية العكسية لربط الامتداد بنوع MIME، بالاعتماد على جدول مدمج لصيغ الويب والمستندات والأرشيفات والخطوط والصوت والصور والفيديو. ويحافظ هذا الغرض المحدد على نتيجة متوقعة ومناسبة للأتمتة.
افهموا التوحيد والأسماء البديلة وتعدد الامتدادات
نادراً ما تكون قيم نوع المحتوى الفعلية مرتبة مثل أمثلة السجلات. فقد تستخدم الخوادم أحرفاً كبيرة أو تضيف معلمات مثل ترميز المحارف. تزيل الأداة المسافات الخارجية، وتحول نوع الوسائط إلى أحرف صغيرة، وتتجاهل كل ما يلي أول فاصلة منقوطة. لذلك تعطي Text/HTML; charset=UTF-8 النتيجة نفسها التي يعطيها text/html. تتحقق الأداة من صيغة النوع/النوع الفرعي بعد التوحيد وقبل مراجعة الجدول، وبذلك تميّز بين الإدخال سيئ الصياغة ونوع MIME الصحيح غير المدعوم. لبعض الصيغ لواحق مألوفة متعددة؛ ففي image/jpeg تكون jpg هي النتيجة المفضلة، وتشمل البدائل jpeg وjpe. الترتيب مقصود وثابت، لذلك يمكنكم استخدام primary_extension من دون إنشاء قواعد تفضيل خاصة. كما تقبل الأداة الاسمين البديلين content_type وmime، مع بقاء mime_type الحقل القياسي في العملاء المولدين.
استخدموا النتيجة بأمان في مسارات الإدخال والتنزيل
يستقبل مسار شائع جسماً وترويسة Content-Type، ثم يختار امتداداً ويحفظ الجسم تحت اسم مولد. استخدموا primary_extension للمكوّن الأخير، لكن أبقوا التحقق من المحتوى عملية مستقلة. قد تكون بيانات MIME الوصفية مفقودة أو خاطئة أو خاضعة لمن يرفع الملف؛ وإضافة لاحقة معقولة لا تجعل وحدات البايت غير الموثوقة آمنة. إذا كان نظامكم ينفذ النتيجة أو يعاينها أو ينشرها، فافحصوا المحتوى أولاً وطبقوا سياسة الأمان المناسبة. تفيد قائمة الامتدادات الكاملة في التحقق أيضاً: وحّدوا لاحقة الاسم الموجود وتأكدوا من ظهورها بين البدائل، بدلاً من رفض ملف jpeg صحيح لأن الخيار المفضل هو jpg. تنتج الأنواع المجهولة خطأً صريحاً، لأن التخمين من النوع الفرعي قد ينشئ أسماء مضللة أو خطرة. وبما أن الجدول مدمج، تعطي المدخلات المتطابقة نتائج متطابقة من دون طلب سجل خارجي. تبلغ كلفة تنفيذ API $0.002 لكل عنصر.
حالات الاستخدام
تسمية استجابة منزلة
اختاروا لاحقة شائعة عندما تتضمن استجابة HTTP ترويسة Content-Type، ولكنها لا توفر اسم Content-Disposition صالحاً للاستخدام.
فحص بيانات الرفع الوصفية
قارنوا لاحقة الملف المرفوع بجميع الامتدادات الشائعة المرتبطة بنوع MIME المعلن.
تصدير الكائنات الثنائية المخزنة
أعيدوا بناء أسماء مقروءة من بيانات وصفية تحتفظ بنوع MIME، لكنها لا تحتفظ بالاسم الأصلي.
الأسئلة الشائعة
هل يتضمن الامتداد المعاد نقطة؟
لا. تعاد الامتدادات مثل jpg أو html من دون نقطة في البداية.
ماذا يحدث لـ charset ومعلمات MIME الأخرى؟
تُتجاهل المعلمات التي تلي أول فاصلة منقوطة، ولذلك يُبحث عن text/html; charset=utf-8 باعتباره text/html.
لماذا قد يعيد نوع MIME واحد عدة امتدادات؟
لبعض الصيغ لواحق راسخة متعددة. تحدد النتيجة امتداداً مفضلاً وتحافظ على البدائل الشائعة بترتيب ثابت.
هل تتحقق الأداة من محتوى الملف؟
لا. فهي تربط بيانات MIME الوصفية المعلنة فقط. افحصوا وحدات البايت غير الموثوقة بصورة مستقلة قبل التنفيذ أو المعاينة أو النشر.
ماذا يحدث إذا لم يكن نوع MIME موجوداً في الجدول؟
تعيد الأداة خطأ إدخال غير صالح بدلاً من تخمين امتداد اعتماداً على النوع الفرعي.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/extension-from-mime \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mime_type":"application/json; charset=utf-8"}'const res = await fetch("https://api.kit.forhosting.com/dev/extension-from-mime", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mime_type": "application/json; charset=utf-8"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/extension-from-mime",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mime_type": "application/json; charset=utf-8"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/extension-from-mime", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mime_type":"application/json; charset=utf-8"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mime_type":"application/json; charset=utf-8"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/extension-from-mime", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"mime_type": "application/json; charset=utf-8"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.extension_from_mime",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |