Skip to content

velocityzen/FileType

Repository files navigation

FileType

The file type is detected by checking the magic number of the data.

This is swift port of file-type

Installation

Swift Package Manager

import PackageDescription

let package = Package(
  name: "MyApp",
  dependencies: [
    .package(url: "https://github.com/velocityzen/FileType", from: "1.0.3")
  ]
)

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 fileType = FileType.getFor(data: data)

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

.getFor(type: FileTypeExtension) -> [FileType]

returns all file types and mime information

.getFor(data: Data) -> FileType?

returns file type detected by checking the magic number

.getBytesCountFor(type: FileTypeExtension) -> Int

returns bytes count needed to detect file type

.getBytesCountFor(types: [FileTypeExtension]) -> Int

returns max bytes count needed to detect file types

Supported file types

  • 3g2 - Multimedia container format defined by the 3GPP2 for 3G CDMA2000 multimedia services
  • 3gp - Multimedia container format defined by the Third Generation Partnership Project (3GPP) for 3G UMTS multimedia services
  • 3mf - 3D Manufacturing Format
  • 7z
  • aac - Advanced Audio Coding
  • ac3 - ATSC A/52 Audio File
  • ai - Adobe Illustrator Artwork
  • aif
  • alias - macOS Alias file
  • amr
  • ape - Monkey's Audio
  • apng - Animated Portable Network Graphics
  • ar
  • arrow - Columnar format for tables of data
  • arw - Sony Alpha Raw image file
  • asar - Simple extensive tar-like archive format with indexing
  • asf - Advanced Systems Format
  • avi
  • avif - AV1 Image File Format
  • blend
  • bmp
  • bpg
  • bz2
  • cab
  • cfb
  • chm - Microsoft Compiled HTML Help
  • cr2 - Canon Raw image file (v2)
  • cr3 - Canon Raw image file (v3)
  • crx
  • cur
  • dcm - DICOM Image File
  • deb
  • dmg
  • dng - Adobe Digital Negative image file
  • docx
  • dsf - Sony DSD Stream File (DSF)
  • elf - Unix Executable and Linkable Format
  • eot
  • eps - Encapsulated PostScript
  • epub
  • exe
  • f4a - Audio-only ISO base media file format used by Adobe Flash Player
  • f4b - Audiobook and podcast ISO base media file format used by Adobe Flash Player
  • f4p - ISO base media file format protected by Adobe Access DRM used by Adobe Flash Player
  • f4v - ISO base media file format used by Adobe Flash Player
  • flac
  • flif
  • flv
  • gif
  • glb - GL Transmission Format
  • gz
  • heic
  • icns
  • ico
  • ics - iCalendar
  • indd
  • it - Audio module format: Impulse Tracker
  • jp2 - JPEG 2000
  • jpg
  • jpm - JPEG 2000
  • jpx - JPEG 2000
  • jxl - JPEG XL image format
  • jxr
  • ktx
  • lnk - Microsoft Windows file shortcut
  • lz
  • lzh - LZH archive
  • m4a - Audio-only MPEG-4 files
  • m4b - Audiobook and podcast MPEG-4 files, which also contain metadata including chapter markers, images, and hyperlinks
  • m4p - MPEG-4 files with audio streams encrypted by FairPlay Digital Rights Management as were sold through the iTunes Store
  • m4v - MPEG-4 Visual bitstreams
  • mid
  • mie - Dedicated meta information format which supports storage of binary as well as textual meta information
  • mj2 - Motion JPEG 2000
  • mkv
  • mobi - Mobipocket
  • mov
  • mp1 - MPEG-1 Audio Layer I
  • mp2
  • mp3
  • mp4
  • mpc - Musepack (SV7 & SV8)
  • mpg
  • mts - MPEG-2 Transport Stream, both raw and Blu-ray Disc Audio-Video (BDAV) versions
  • mxf
  • nef - Nikon Electronic Format image file
  • nes
  • odp - OpenDocument for presentations
  • ods - OpenDocument for spreadsheets
  • odt - OpenDocument for word processing
  • oga
  • ogg
  • ogm
  • ogv
  • ogx
  • opus
  • orf - Olympus Raw image file
  • otf
  • pcap - Libpcap File Format
  • pdf
  • pgp - Pretty Good Privacy
  • png
  • pptx
  • ps
  • psd
  • qcp
  • raf - Fujifilm RAW image file
  • rar
  • rpm
  • rtf
  • rw2 - Panasonic RAW image file
  • s3m - Audio module format: ScreamTracker 3
  • shp - Geospatial vector data format
  • skp - SketchUp
  • spx
  • sqlite
  • stl - Standard Tesselated Geometry File Format (ASCII only)
  • swf
  • tar
  • tif
  • ttf
  • vcf - vCard
  • voc - Creative Voice File
  • wasm
  • wav
  • webm
  • webp
  • woff2
  • woff
  • wv - WavPack
  • xcf - eXperimental Computing Facility
  • xlsx
  • xm - Audio module format: FastTracker 2
  • xml
  • xpi
  • xz
  • Z
  • zip
  • zst - Archive file

Pull requests are welcome for additional commonly used file types.

Testing

swift test

About

File type and mime detection by magic bytes

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors