An open API service indexing awesome lists of open source software.

https://github.com/jaywcjlove/filetype

This tool checks a file’s MIME type using magic bytes and can retrieve the file extension from the MIME type.
https://github.com/jaywcjlove/filetype

file file-type swift swiftui

Last synced: 8 months ago
JSON representation

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

Awesome Lists containing this project

README

          


Using my app is also a way to support me:


VidCrop
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](https://github.com/sendyhalim/Swime) and ported from [file-type](https://www.npmjs.com/package/file-type).

The [`Extensions`](./Sources/FileType/Supported.swift), [`mimeTypes`](./Sources/FileType/Supported.swift), and [`mimeTypesAll`](./Sources/FileType/Supported.swift) data in the dependency package are all generated by scripts based on [file-type](https://www.npmjs.com/package/file-type).

The function for checking whether the bytes match the `MimeType` specification is generated from a [`mapping.js`](./scripts/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`](./scripts/mapping.js) file.

## Installation

### Swift Package Manager

Add CodeMirror to your project using Xcode:

1. In Xcode, go to `File` → `Add 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:

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

## Usage

Inspect mime type

```swift
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

```swift
let avroMimeType = MimeType.mimeTypesAll.first { $0.mime == "application/avro" }
if let avroMimeType = avroMimeType {
avroMimeType.mime // "application/avro"
avroMimeType.type // .avro
avroMimeType.type.rawValue // "avro"
}
```

```swift
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:

- https://github.com/sendyhalim/Swime
- https://github.com/sindresorhus/file-type
- https://github.com/jshttp/mime-db

## License

Licensed under the MIT License.