Skip to content

This tool checks a file’s MIME type using magic bytes and can retrieve the file extension from the MIME type.

License

Notifications You must be signed in to change notification settings

jaywcjlove/FileType

Repository files navigation

Using my app is also a way to support me:
Vidwall Mousio Hint Mousio Musicer Audioer FileSentinel FocusCursor Videoer KeyClicker DayBar Iconed RightMenu Master Quick RSS Quick RSS Web Serve Copybook Generator DevTutor for SwiftUI RegexMate Time Passage Iconize Folder Textsound Saver Create Custom Symbols DevHub Resume Revise Palette Genius Symbol Scribe

FileType

This tool detects a file’s MIME type using magic bytes and can retrieve the file extension based on the MIME type.
It can identify the MIME type of Data, based on Swime and ported from file-type.

The Extensions, mimeTypes, and mimeTypesAll data in the dependency package are all generated by scripts based on file-type.

The function for checking whether the bytes match the MimeType specification is generated from a mapping.js mapping file created using data from the file-type package.
Since the data may not always be accurate, it can be corrected by modifying the mapping.js file.

Installation

Swift Package Manager

Add CodeMirror to your project using Xcode:

  1. In Xcode, go to FileAdd Package Dependencies...
  2. Enter the repository URL: https://github.com/jaywcjlove/FileType.git
  3. Click Add Package

Or add it to your Package.swift file:

dependencies: [
    .package(url: "https://github.com/jaywcjlove/FileType.git", from: "1.0.0")
]

Usage

Inspect mime type

import FileType

let path = "/path/to/some-file.jpg"
let url = URL(fileURLWithPath: path, isDirectory: false)
let data = try! Data(contentsOf: url)
let mimeType = FileType.mimeType(data: data)

mimeType?.type == .jpg // true
mimeType! // MimeType(mime: "image/jpeg", ext: "jpg", type: .jpg)

Get the file extension from a MIME type

let avroMimeType = MimeType.mimeTypesAll.first { $0.mime == "application/avro" }
if let avroMimeType = avroMimeType {
    avroMimeType.mime   // "application/avro"
    avroMimeType.type   // .avro
    avroMimeType.type.rawValue // "avro"
}
let mimeTypes = MimeType.mimeTypes.first(where: { $0.key == "application/mp4" })
if let mimeTypes = mimeTypes {
    mimeTypes.compressible
    mimeTypes.extensions // ["mp4","mpg4","mp4s","m4p"]
}

Acknowledgments

Thanks to these projects:

License

Licensed under the MIT License.

About

This tool checks a file’s MIME type using magic bytes and can retrieve the file extension from the MIME type.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages