A MIME type sniffer for Go.


Keywords
content-type, file-format, file-signature, go, magic-number, mime, mimesniffer, sniffer, type
License
MIT
Install
go get github.com/aofei/mimesniffer

Documentation

MIMESniffer

GitHub Actions codecov Go Report Card PkgGoDev

A MIME type sniffer for Go.

MIMESniffer implements the algorithm described at here and uses the file signatures (aka magic numbers) listed here to determine the MIME type of the given data. So it can be used as an alternative for the http.DetectContentType.

Features

  • Extremely easy to use
  • Quite fast
  • Supports a wide range of MIME types
    • application/epub+zip
    • application/font-sfnt
    • application/font-woff
    • application/msword
    • application/octet-stream
    • application/ogg
    • application/pdf
    • application/postscript
    • application/rtf
    • application/vnd.ms-cab-compressed
    • application/vnd.ms-excel
    • application/vnd.ms-fontobject
    • application/vnd.ms-powerpoint
    • application/vnd.openxmlformats-officedocument.presentationml.presentation
    • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    • application/vnd.openxmlformats-officedocument.wordprocessingml.document
    • application/wasm
    • application/x-7z-compressed
    • application/x-bzip2
    • application/x-compress
    • application/x-deb
    • application/x-executable
    • application/x-google-chrome-extension
    • application/x-gzip
    • application/x-lzip
    • application/x-msdownload
    • application/x-nintendo-nes-rom
    • application/x-rar-compressed
    • application/x-rpm
    • application/x-shockwave-flash
    • application/x-sqlite3
    • application/x-tar
    • application/x-unix-archive
    • application/x-xz
    • application/zip
    • audio/aac
    • audio/aiff
    • audio/amr
    • audio/basic
    • audio/m4a
    • audio/midi
    • audio/mpeg
    • audio/ogg
    • audio/wave
    • audio/x-flac
    • audio/x-wav
    • font/collection
    • font/otf
    • font/ttf
    • font/woff2
    • font/woff
    • image/bmp
    • image/gif
    • image/jp2
    • image/jpeg
    • image/png
    • image/tiff
    • image/vnd.adobe.photoshop
    • image/vnd.microsoft.icon
    • image/webp
    • image/x-canon-cr2
    • text/html; charset=utf-8
    • text/plain; charset=utf-16be
    • text/plain; charset=utf-16le
    • text/plain; charset=utf-8
    • text/xml; charset=utf-8
    • video/avi
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-m4v
    • video/x-matroska
    • video/x-ms-wmv
    • video/x-msvideo
  • Zero third-party dependencies

Installation

Open your terminal and execute

$ go get github.com/aofei/mimesniffer

done.

The only requirement is the Go, at least v1.13.

Community

If you want to discuss MIMESniffer, or ask questions about it, simply post questions or ideas here.

Contributing

If you want to help build MIMESniffer, simply follow this to send pull requests here.

License

This project is licensed under the MIT License.

License can be found here.