MIME Type — ano ito, mga uri ng file at pagtukoy sa iOS

May-akda: IT Sectr Nai-publish: 2026-07-11 Oras ng pagbabasa: 7 min

MIME Type — ay isang standardized identifier ng format ng data, na ginagamit sa iOS para sa pagtukoy ng uri ng file kapag nagpapadala sa network, file system at interprocess communication. Ayon sa Apple Developer Documentation, 2024, ang MIME Type (Multipurpose Internet Mail Extensions) ay nag-uuri ng mga file ayon sa kanilang nilalaman: image/jpeg, application/pdf, text/plain. Ang iOS ay nagko-convert ng MIME sa UTI (Uniform Type Identifier) sa pamamagitan ng UTType para sa system-level na pagproseso ng mga file.

Mga Pangunahing Punto

  • MIME Type — identifier ng format ng data mula sa dalawang bahagi: uri/sub-uri (image/png)
  • UTType — iOS na katulad ng MIME, ginagamit sa loob ng system para sa pagtukoy ng mga uri ng file
  • Conversion sa pagitan ng MIME at UTI ay ginagawa sa pamamagitan ng UTType.preferredMIMEType
  • Pagtukoy ng MIME posible sa pamamagitan ng extension ng file, nilalaman (magic bytes) o HTTP header
  • iOS Sandbox ay naglilimita ng access sa mga file ng hindi kilalang mga uri — mahalaga na magrehistro nang tama ng mga custom na uri

Ano ang MIME Type?

MIME Type (Multipurpose Internet Mail Extensions) — ay isang standardized identifier ng format ng data na binubuo ng dalawang bahagi: pangunahing uri (type) at sub-uri (subtype), na pinaghihiwalay ng isang slash. Mga pangunahing kategorya: text (teksto), image (mga larawan), audio (audio), video (video), application (binary data), multipart (compound na mensahe).

Ang MIME standard ay orihinal na binuo para sa mga email attachment (RFC 2046, 1996), ngunit ngayon ay ginagamit sa lahat ng dako: ang mga HTTP server ay nagpapahiwatig ng Content-Type ng tugon, tinutukoy ng mga browser kung paano iproseso ang mga file, at mga mobile application — kung anong data ang maaaring buksan. Ang IANA (Internet Assigned Numbers Authority) ay nagpapanatili ng rehistro ng mga rehistradong MIME type.

Ayon sa IANA Media Types Registry (2024), mahigit 1800 opisyal na MIME type ang rehistrado, at ang aktwal na bilang kasama ang mga custom at vendor type ay lumalampas sa 5000. Sinusuportahan ng iOS ang karamihan ng mga standard na uri at nagbibigay ng API para sa pagtatrabaho sa kanila sa pamamagitan ng Uniform Type Identifiers.

MIME at UTI sa iOS: pagkakaiba at conversion

UTI (Uniform Type Identifier) — ay sariling sistema ng Apple para sa pagtukoy ng mga uri ng nilalaman, na ginagamit sa loob ng iOS at macOS. Hindi tulad ng MIME, sinusuportahan ng UTI ang hierarchy ng inheritance (halimbawa, public.image — magulang para sa public.png at public.jpeg) at hindi lamang sumasaklaw sa mga format ng file, kundi pati na rin sa mga abstract na uri ng data.

MIME TypeUTIExtensionPaglalarawan
image/jpegpublic.jpeg.jpg, .jpegJPEG na larawan
application/pdfcom.adobe.pdf.pdfPDF na dokumento
text/plainpublic.plain-text.txtText file
application/jsonpublic.json.jsonJSON data
video/mp4public.mpeg-4.mp4MP4 na video

Conversion sa pagitan ng MIME at UTI sa iOS ay ginagawa sa pamamagitan ng UTType class (iOS 14+). Ang system ay nagpapanatili ng internal database ng mga pagkakatugma na sumasaklaw sa karamihan ng mga standard na format. Para sa mga custom na uri, ang developer ay nagrerehistro ng pagkakatugma sa Info.plist.

swift
import UniformTypeIdentifiers

let mimeType = "image/jpeg"
if let uti = UTType(mimeType: mimeType) {
    print("UTI: \(uti.identifier)")
    print("Conforms to image: \(uti.conforms(to: .image))")
    print("Extension: \(uti.preferredFilenameExtension ?? "")")
}

// Baliktad na conversion: UTI sa MIME
if let uti = UTType(filenameExtension: "pdf"),
   let mime = uti.preferredMIMEType {
    print("MIME for PDF: \(mime)")
}

UTI hierarchy ay nagpapahintulot na suriin kung ang isang uri ay tumutugma sa isang partikular na kategorya. Halimbawa, lahat ng uri ng larawan (JPEG, PNG, GIF) ay conforms(to: .image). Ito ay maginhawa para sa group filtering at pagtukoy ng kakayahan ng pagproseso ng uri ng mga system component.

Mahalagang pagkakaiba: MIME — ay flat classification (walang inheritance), samantalang ang UTI ay sumusuporta sa multiple inheritance. Halimbawa, ang public.html ay tumutugma sa parehong public.source-code at public.text. Ito ay nagbibigay ng mas flexible na routing kapag nagpoproseso ng mga file sa iOS.

Paano matukoy ang MIME Type ng isang file sa iOS

Tatlong paraan ng pagtukoy ng MIME Type ay magagamit sa iOS: sa pamamagitan ng extension ng file (mabilis, ngunit hindi maaasahan), sa pamamagitan ng nilalaman sa pamamagitan ng magic bytes (maaasahan, ngunit nangangailangan ng pagbabasa ng file) at sa pamamagitan ng HTTP header Content-Type (para lamang sa mga network request).

swift
import UniformTypeIdentifiers

enum MIMEDetector {
    // Tuklasin sa pamamagitan ng extension
    static func fromExtension(_ ext: String) -> String? {
        UTType(filenameExtension: ext)?.preferredMIMEType
    }

    // Tuklasin sa pamamagitan ng nilalaman (magic bytes)
    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
    }
}

Pagtukoy sa pamamagitan ng extension sa pamamagitan ng UTType — ang pinakamabilis na paraan, ngunit hindi maaasahan kung ang extension ay wala o peke. Maaaring palitan ng attacker ang pangalan ng .exe sa .jpg — tutukuyin ng system ang image/jpeg, kahit na ang file ay executable. Para sa mga kritikal na senaryo (seguridad, medical data) obligadong gamitin ang pagsusuri batay sa nilalaman.

Magic bytes — ay ang mga unang byte ng file, natatangi para sa bawat format. Karamihan ng mga format ay may signature na 2–12 byte. Ang iOS ay hindi nagbibigay ng built-in na MIME detector batay sa nilalaman — ang developer ay maaaring mag-implement ng sariling signature table, o gumamit ng mga library tulad ng CocoaLumberjack o custom detector batay sa heuristics.

Pagrehistro ng mga custom na MIME at UTI na uri

Mga custom na uri ay kinakailangan kapag ang application ay gumagana sa proprietary data format na hindi rehistrado sa IANA o Apple. Ang pagrehistro sa Info.plist ay nagpapahintulot sa iOS na iproseso nang tama ang mga naturang file: buksan ang mga ito mula sa Files.app, magpakita ng mga icon at ipasa ang mga ito sa iba pang mga application sa pamamagitan ng 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>

Para sa pagrehistro ng isang custom na uri, kailangan mong tukuyin sa Info.plist: UTI identifier (sa reverse-DNS format), pagkakatugma sa mga magulang na uri, extension ng file at MIME type. Ginagamit ng iOS ang impormasyong ito para sa routing ng file: kapag binuksan ng user ang isang .sdoc file, alam ng system na ang may-ari nito ay iyong application.

UTExportedTypeDeclarations — para sa mga uri na tinukoy ng iyong application (export). UTImportedTypeDeclarations — para sa mga uri na ginawa ng iba pang mga application kung saan maaaring gumana ang iyong application (import). Inirerekomenda ng Apple na irehistro ang lahat ng custom na uri kung saan gumagana ang application para sa tamang integrasyon sa system.

Seguridad at pagproseso ng hindi kilalang mga uri

Hindi kilalang MIME type ay nagdudulot ng panganib sa seguridad ng iOS application. Kung ang isang file ay may hindi kilala o hindi na-verify na uri, ang application ay dapat gumawa ng mga hakbang sa pag-iingat: huwag buksan ang file nang awtomatiko, magpakita ng babala sa user o suriin ang nilalaman bago iproseso.

Mga pangunahing banta: ang isang file na may pekeng MIME type ay maaaring maglaman ng malicious code o exploit para sa vulnerability ng parser. Pinoprotektahan ng iOS ang system sa pamamagitan ng Sandbox, ngunit ang application ay maaaring maging vulnerable kung ito ay nagtitiwala sa MIME type nang walang pagsusuri ng nilalaman. Palaging suriin ang file sa pamamagitan ng magic bytes kung ito ay mula sa hindi mapagkakatiwalaang source.

Ayon sa OWASP Mobile Security Guide, 2024, ang mga sumusunod na praktika ay inilalapat para sa pagproseso ng mga file ng hindi kilalang uri: tanggihan ang mga file na may MIME type na application/octet-stream mula sa hindi na-verify na mga source; gamitin ang UTType para sa pagsusuri ng pagkakatugma sa inaasahang mga kategorya; huwag magbukas ng mga file sa external na application nang walang kumpirmasyon ng user; i-log ang lahat ng kaso ng hindi pagkakatugma sa pagitan ng MIME at aktwal na nilalaman para sa security audit.

Pagrehistro ng custom na MIME type sa Info.plist — hindi lamang functionality, kundi pati na rin seguridad. Kung ang application ay nagrerehistro lamang ng sarili nitong mga uri nang tama, hindi magkakamali ang system na magpadala ng mga dayuhang file dito. Gumamit ng mga specific vendor prefix (application/vnd.company.app-format) sa halip ng generic (application/x-format) upang maiwasan ang mga conflict sa iba pang mga application.

Mga Madalas Itanong

Ano ang MIME Type?

MIME Type — ay isang standard na identifier ng format ng data na binubuo ng uri at sub-uri (halimbawa, image/jpeg). Ito ay ginagamit ng mga HTTP server, browser at application para sa pagtukoy kung paano iproseso ang file.

Paano naiiba ang UTI sa MIME sa iOS?

UTI (Uniform Type Identifier) — sistema ng Apple para sa pagtukoy ng mga uri ng nilalaman na may suporta para sa hierarchy ng inheritance. MIME — flat standard para sa network. Gumagamit ang iOS ng UTType para sa conversion sa pagitan ng UTI at MIME sa pamamagitan ng property na preferredMIMEType.

Paano matukoy ang MIME Type ng isang file sa iOS?

Tatlong paraan: sa pamamagitan ng extension sa pamamagitan ng UTType(filenameExtension:), sa pamamagitan ng nilalaman sa pamamagitan ng magic bytes (unang byte ng file), sa pamamagitan ng HTTP header Content-Type. Para sa seguridad, gumamit ng pagsusuri ayon sa nilalaman, hindi lamang extension.

Paano magrehistro ng custom na MIME type sa iOS?

Magdagdag ng UTExportedTypeDeclarations sa Info.plist: tukuyin ang UTI identifier (com.company.format), extension ng file, MIME type at magulang na uri. Ang mga file na may ganitong extension ay awtomatikong maiuugnay sa iyong application.

Ano ang gagawin sa hindi kilalang MIME type?

Huwag magtiwala sa hindi kilalang MIME. Suriin ang nilalaman sa pamamagitan ng magic bytes, magpakita ng babala sa user at huwag buksan ang file nang awtomatiko. Para sa mga file ng uri application/octet-stream, palaging magsagawa ng heuristic analysis bago iproseso.

Buod

  • MIME Type — standardized identifier ng format ng data (uri/sub-uri), ginagamit sa HTTP at iOS
  • UTType — iOS API para sa pagtatrabaho sa mga uri ng nilalaman, sumusuporta sa hierarchy at conversion MIME→UTI
  • Pagtukoy ng uri ay ginagawa sa pamamagitan ng extension, magic bytes o HTTP header Content-Type
  • Mga custom na uri ay nirerehistro sa Info.plist sa pamamagitan ng UTExportedTypeDeclarations
  • Seguridad ay nangangailangan ng pagsusuri ng nilalaman — MIME mula sa header ay maaaring peke
  • UTI hierarchy ay nagpapahintulot na suriin ang kategorya ng file (larawan, teksto, video) sa pamamagitan ng conforms(to:)
  • Application/octet-stream — universal type para sa hindi kilalang binary data, nangangailangan ng heuristic analysis

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din