MIME قسم — یہ کیا ہے، فائل کی اقسام اور iOS میں تعین

مصنف: IT Sectr اشاعت: 2026-07-11 مطالعے کا وقت: 7 منٹ

MIME قسم ایک معیاری ڈیٹا فارمیٹ شناخت کنندہ ہے جو iOS میں نیٹ ورک، فائل سسٹم اور انٹر پروسیس کمیونیکیشن کے ذریعے منتقلی کے وقت فائل کی قسم تعین کرنے کے لیے استعمال ہوتا ہے۔ Apple ڈویلپر دستاویزات، 2024 کے مطابق، MIME قسم (Multipurpose Internet Mail Extensions) فائلوں کو ان کے مواد کی بنیاد پر درجہ بندی کرتا ہے: image/jpeg, application/pdf, text/plain۔ iOS سسٹم فائل ہینڈلنگ کے لیے UTType کے ذریعے MIME کو UTI (یکساں قسم کا شناخت کنندہ) میں تبدیل کرتا ہے۔

اہم نکات

  • MIME قسم — دو حصوں پر مشتمل ڈیٹا فارمیٹ شناخت کنندہ: قسم/ذیلی قسم (image/png)
  • UTType — MIME کا iOS ہم منصب، اندرونی طور پر فائل کی اقسام کی شناخت کے لیے استعمال ہوتا ہے
  • تبدیلی MIME اور UTI کے درمیان UTType.preferredMIMEType کے ذریعے کی جاتی ہے
  • MIME تعین فائل ایکسٹینشن، مواد (مجک بائٹس) یا HTTP ہیڈر سے ممکن ہے
  • iOS سینڈ باکس نامعلوم اقسام کی فائلوں تک رسائی کو محدود کرتا ہے — کسٹم اقسام کو صحیح طریقے سے رجسٹر کرنا ضروری ہے

MIME قسم کیا ہے؟

MIME قسم (Multipurpose Internet Mail Extensions) ایک معیاری ڈیٹا فارمیٹ شناخت کنندہ ہے جو دو حصوں پر مشتمل ہوتا ہے: ایک مرکزی قسم (type) اور ایک ذیلی قسم (subtype)، سلیش سے الگ کردہ۔ اہم زمرے: text (متن)، image (تصاویر)، audio (آڈیو)، video (ویڈیو)، application (بائنری ڈیٹا)، multipart (مرکب پیغامات)۔

MIME معیار اصل میں ای میل منسلکات کے لیے تیار کیا گیا تھا (RFC 2046، 1996)، لیکن آج یہ ہر جگہ استعمال ہوتا ہے: HTTP سرورز جوابات کا Content-Type متعین کرتے ہیں، براؤزرز فائلوں کو ہینڈل کرنے کا طریقہ طے کرتے ہیں، اور موبائل ایپلیکیشنز شناخت کرتی ہیں کہ کون سا ڈیٹا کھولا جا سکتا ہے۔ IANA (Internet Assigned Numbers Authority) رجسٹرڈ MIME اقسام کا رجسٹری رکھتی ہے۔

IANA میڈیا اقسام کا رجسٹری (2024) کے مطابق، 1800 سے زیادہ سرکاری MIME اقسام رجسٹرڈ ہیں، اور کسٹم اور وینڈر اقسام سمیت حقیقی تعداد 5000 سے تجاوز کر گئی ہے۔ iOS زیادہ تر معیاری اقسام کو سپورٹ کرتا ہے اور یکساں قسم کے شناخت کنندگان کے ذریعے ان کے ساتھ کام کرنے کے لیے APIs فراہم کرتا ہے۔

iOS میں MIME اور UTI: فرق اور تبدیلی

UTI (یکساں قسم کا شناخت کنندہ) iOS اور macOS کے اندر استعمال ہونے والا Apple کا اپنا مواد کی قسم کی شناخت کا نظام ہے۔ MIME کے برعکس، UTI وراثتی درجہ بندی کو سپورٹ کرتا ہے (مثال کے طور پر، public.image public.png اور public.jpeg کا والدین ہے) اور اس میں نہ صرف فائل فارمیٹس بلکہ تجریدی ڈیٹا کی اقسام بھی شامل ہیں۔

MIME قسمUTIایکسٹینشنتفصیل
image/jpegpublic.jpeg.jpg, .jpegJPEG تصویر
application/pdfcom.adobe.pdf.pdfPDF دستاویز
text/plainpublic.plain-text.txtمتن فائل
application/jsonpublic.json.jsonJSON ڈیٹا
video/mp4public.mpeg-4.mp4MP4 ویڈیو

تبدیلی iOS میں MIME اور UTI کے درمیان UTType کلاس (iOS 14+) کے ذریعے انجام دی جاتی ہے۔ سسٹم ایک داخلی میپنگ ڈیٹا بیس برقرار رکھتا ہے جو زیادہ تر معیاری فارمیٹس کو کور کرتا ہے۔ کسٹم اقسام کے لیے، ڈویلپر Info.plist میں میپنگ رجسٹر کرتا ہے۔

swift
import UniformTypeIdentifiers

let mimeType = "image/jpeg"
if let uti = UTType(mimeType: mimeType) {
    print("UTI: \(uti.identifier)")
    print("تصویر کے مطابق: \(uti.conforms(to: .image))")
    print("ایکسٹینشن: \(uti.preferredFilenameExtension ?? "")")
}

// الٹی تبدیلی: UTI سے MIME
if let uti = UTType(filenameExtension: "pdf"),
   let mime = uti.preferredMIMEType {
    print("PDF کے لیے MIME: \(mime)")
}

UTI درجہ بندی جانچنے کی اجازت دیتی ہے کہ آیا ایک قسم کسی خاص زمرے کے مطابق ہے۔ مثال کے طور پر، تمام تصویری اقسام (JPEG، PNG، GIF) conform(to: .image) کرتی ہیں۔ یہ گروپ فلٹرنگ اور اس بات کا تعین کرنے کے لیے مفید ہے کہ آیا ایک قسم سسٹم کے اجزاء کے ذریعے ہینڈل کی جا سکتی ہے۔

اہم فرق: MIME ایک فلیٹ درجہ بندی ہے (کوئی وراثت نہیں)، جبکہ UTI متعدد وراثت کو سپورٹ کرتا ہے۔ مثال کے طور پر، public.html public.source-code اور public.text دونوں کے مطابق ہے۔ یہ iOS میں فائلوں کی پروسیسنگ کے وقت زیادہ لچکدار روٹنگ فراہم کرتا ہے۔

iOS میں فائل کی MIME قسم کیسے تعین کریں

تین طریقے iOS میں MIME قسم کے تعین کے لیے دستیاب ہیں: فائل ایکسٹینشن سے (تیز لیکن ناقابل اعتبار)، مجک بائٹس کے ذریعے مواد سے (قابل اعتبار لیکن فائل پڑھنے کی ضرورت ہے)، اور HTTP Content-Type ہیڈر سے (صرف نیٹ ورک کی درخواستوں کے لیے)۔

swift
import UniformTypeIdentifiers

enum MIMEDetector {
    // ایکسٹینشن سے پتہ لگائیں
    static func fromExtension(_ ext: String) -> String? {
        UTType(filenameExtension: ext)?.preferredMIMEType
    }

    // مواد سے پتہ لگائیں (مجک بائٹس)
    static func fromFile(at url: URL) -> String? {
        guard let handle = try? FileHandle(forReadingFrom: url) else {
            return nil
        }
        defer { handle.closeFile() }
        let header = handle.readData(ofLength: 12)

        // PNG: 89 50 4E 47 0D 0A 1A 0A
        // JPEG: FF D8 FF
        // PDF: 25 50 44 46
        // ZIP: 50 4B 03 04

        if header.starts(with: [0x89, 0x50, 0x4E, 0x47]) {
            return "image/png"
        }
        if header.starts(with: [0xFF, 0xD8, 0xFF]) {
            return "image/jpeg"
        }
        if header.starts(with: [0x25, 0x50, 0x44, 0x46]) {
            return "application/pdf"
        }
        return nil
    }
}

ایکسٹینشن پر مبنی تعین UTType کے ذریعے سب سے تیز طریقہ ہے، لیکن یہ اس وقت ناقابل اعتبار ہے جب ایکسٹینشن غائب یا جعلی ہو۔ ایک حملہ آور .exe کا نام بدل کر .jpg کر سکتا ہے — سسٹم اسے image/jpeg کے طور پر شناخت کرے گا اگرچہ فائل قابل عمل ہو۔ اہم منظرناموں (سیکیورٹی، طبی ڈیٹا) کے لیے، ہمیشہ مواد پر مبنی تصدیق استعمال کریں۔

مجک بائٹس فائل کے پہلے بائٹس ہوتے ہیں، جو ہر فارمیٹ کے لیے منفرد ہوتے ہیں۔ زیادہ تر فارمیٹس میں 2–12 بائٹس کا دستخط ہوتا ہے۔ iOS مواد کے لحاظ سے کوئی بلٹ ان MIME ڈیٹیکٹر فراہم نہیں کرتا — ڈویلپر یا تو خود دستخط کی ایک ٹیبل لاگو کرتا ہے یا CocoaLumberjack جیسی لائبریریاں یا ہیورسٹک پر مبنی کسٹم ڈیٹیکٹر استعمال کرتا ہے۔

کسٹم MIME اور UTI اقسام کی رجسٹریشن

کسٹم اقسام اس وقت ضروری ہوتی ہیں جب کوئی ایپلیکیشن ملکیتی ڈیٹا فارمیٹس کے ساتھ کام کرتی ہے جو IANA یا Apple میں رجسٹرڈ نہیں ہیں۔ Info.plist میں رجسٹریشن iOS کو ایسی فائلوں کو صحیح طریقے سے ہینڈل کرنے کی اجازت دیتی ہے: انہیں Files.app سے کھولنا، آئیکنز ڈسپلے کرنا، اور UIActivityViewController کے ذریعے دوسری ایپلیکیشنز کو منتقل کرنا۔

xml
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>MyApp Document</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.myapp.secret-doc</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeIdentifier</key>
        <string>com.myapp.secret-doc</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array><string>sdoc</string></array>
            <key>public.mime-type</key>
            <array><string>application/vnd.myapp.secret-doc</string></array>
        </dict>
    </dict>
</array>

کسٹم قسم رجسٹر کرنے کے لیے، آپ کو Info.plist میں درج ذیل بتانا ہوگا: UTI شناخت کنندہ (reverse-DNS فارمیٹ میں)، والدین کی اقسام کے مطابق ہونا، فائل ایکسٹینشن، اور MIME قسم۔ iOS فائل روٹنگ کے لیے اس معلومات کا استعمال کرتا ہے: جب کوئی صارف .sdoc فائل کھولتا ہے، سسٹم جانتا ہے کہ اس کا مالک آپ کی ایپلیکیشن ہے۔

UTExportedTypeDeclarations — آپ کی ایپلیکیشن کے ذریعے متعین کردہ اقسام کے لیے (برآمد)۔ UTImportedTypeDeclarations — دوسری ایپلیکیشنز کے ذریعے بنائی گئی اقسام کے لیے جن کے ساتھ آپ کی ایپ کام کر سکتی ہے (درآمد)۔ Apple درست سسٹم انضمام کے لیے آپ کی ایپلیکیشن کے کام کرنے والی تمام کسٹم اقسام کو رجسٹر کرنے کی سفارش کرتا ہے۔

سیکیورٹی اور نامعلوم اقسام کی ہینڈلنگ

نامعلوم MIME اقسام iOS ایپلیکیشنز کے لیے سیکیورٹی رسک پیدا کرتی ہیں۔ اگر کسی فائل کی نامعلوم یا غیر تصدیق شدہ قسم ہے، تو ایپلیکیشن کو احتیاط کرنی چاہیے: فائل کو خود بخود نہ کھولیں، صارف کو وارننگ دکھائیں، یا پروسیسنگ سے پہلے مواد کا تجزیہ کریں۔

بنیادی خطرات: جعلی MIME قسم والی فائل میں بدنیتی پر مبنی کوڈ یا پارسر کے کمزوری کا فائدہ اٹھانے والا ایکسپلویٹ ہو سکتا ہے۔ iOS سینڈ باکس کے ذریعے سسٹم کی حفاظت کرتا ہے، لیکن ایپلیکیشن کمزور ہو سکتی ہے اگر وہ مواد کی تصدیق کیے بغیر MIME قسم پر بھروسہ کرے۔ اگر فائلیں ناقابل اعتبار ذریعہ سے آئی ہوں تو ہمیشہ مجک بائٹس سے چیک کریں۔

OWASP موبائل سیکیورٹی گائیڈ، 2024 کے مطابق، نامعلوم اقسام کی فائلوں کو ہینڈل کرنے کے لیے درج ذیل طریقے لاگو ہوتے ہیں: ناقابل اعتبار ذرائع سے application/octet-stream MIME قسم والی فائلوں کو مسترد کریں؛ متوقع زمروں کے مطابق ہونے کی جانچ کے لیے UTType استعمال کریں؛ صارف کی تصدیق کے بغیر بیرونی ایپلیکیشنز میں فائلیں نہ کھولیں؛ سیکیورٹی آڈیٹنگ کے لیے MIME اور حقیقی مواد کی عدم مطابقت کے تمام واقعات لاگ کریں۔

Info.plist میں کسٹم MIME اقسام کی رجسٹریشن نہ صرف فعالیت ہے بلکہ سیکیورٹی بھی ہے۔ اگر کوئی ایپلیکیشن صرف اپنی اقسام کو صحیح طریقے سے رجسٹر کرتی ہے، تو سسٹم غلطی سے اسے دوسری فائلیں نہیں بھیجے گا۔ دوسری ایپلیکیشنز کے ساتھ تنازعات سے بچنے کے لیے عام پیش لفظ (application/x-format) کے بجائے مخصوص وینڈر پیش لفظ (application/vnd.company.app-format) استعمال کریں۔

اکثر پوچھے گئے سوالات

MIME قسم کیا ہے؟

MIME قسم ایک معیاری ڈیٹا فارمیٹ شناخت کنندہ ہے جو ایک قسم اور ذیلی قسم (مثال کے طور پر، image/jpeg) پر مشتمل ہے۔ یہ HTTP سرورز، براؤزرز اور ایپلیکیشنز کے ذریعے یہ تعین کرنے کے لیے استعمال ہوتا ہے کہ فائل کو کیسے ہینڈل کرنا ہے۔

iOS میں UTI، MIME سے کیسے مختلف ہے؟

UTI (یکساں قسم کا شناخت کنندہ) وراثتی درجہ بندی کی حمایت کے ساتھ مواد کی اقسام کی شناخت کے لیے Apple کا نظام ہے۔ MIME نیٹ ورک کے لیے ایک فلیٹ معیار ہے۔ iOS preferredMIMEType پراپرٹی کے ذریعے UTI اور MIME کے درمیان تبدیلی کے لیے UTType استعمال کرتا ہے۔

iOS میں فائل کی MIME قسم کیسے تعین کریں؟

تین طریقے: ایکسٹینشن سے UTType(filenameExtension:) کے ذریعے، مواد سے مجک بائٹس کے ذریعے (فائل کے پہلے بائٹس)، HTTP ہیڈر سے Content-Type۔ سیکیورٹی کے لیے، صرف ایکسٹینشن کے بجائے مواد پر مبنی تصدیق استعمال کریں۔

iOS میں کسٹم MIME قسم کیسے رجسٹر کریں؟

Info.plist میں UTExportedTypeDeclarations شامل کریں: UTI شناخت کنندہ (com.company.format)، فائل ایکسٹینشن، MIME قسم اور والدین کی قسم بتائیں۔ اس ایکسٹینشن والی فائلیں خود بخود آپ کی ایپلیکیشن سے منسلک ہو جائیں گی۔

نامعلوم MIME اقسام کے ساتھ کیا کریں؟

نامعلوم MIME پر بھروسہ نہ کریں۔ مجک بائٹس سے مواد کی جانچ کریں، صارف کو وارننگ دکھائیں اور فائل خود بخود نہ کھولیں۔ application/octet-stream قسم کی فائلوں کے لیے، پروسیسنگ سے پہلے ہمیشہ ہیورسٹک تجزیہ کریں۔

خلاصہ

  • MIME قسم — HTTP اور iOS میں استعمال ہونے والا معیاری ڈیٹا فارمیٹ شناخت کنندہ (قسم/ذیلی قسم)
  • UTType — مواد کی اقسام کے ساتھ کام کرنے کے لیے iOS API، درجہ بندی اور MIME→UTI تبدیلی کو سپورٹ کرتا ہے
  • قسم کا تعین ایکسٹینشن، مجک بائٹس یا HTTP Content-Type ہیڈر سے کیا جاتا ہے
  • کسٹم اقسام UTExportedTypeDeclarations کے ذریعے Info.plist میں رجسٹر ہوتی ہیں
  • سیکیورٹی کے لیے مواد کی تصدیق ضروری ہے — ہیڈر سے MIME جعلی ہو سکتا ہے
  • UTI درجہ بندی conforms(to:) کے ذریعے فائل کے زمرے (تصویر، متن، ویڈیو) کی جانچ کی اجازت دیتی ہے
  • Application/octet-stream — نامعلوم بائنری ڈیٹا کے لیے عالمگیر قسم، ہیورسٹک تجزیہ کی ضرورت ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں