Skip to content

A fast golang library for MIME type and file extension detection, based on magic numbers.

License

Notifications You must be signed in to change notification settings

fahadsiddiqui/mimetype

Repository files navigation

mimetype

A package for detecting MIME types and extensions based on magic numbers

No bindings, all written in pure go

Build Status Documentation Go report card Go report card License

Install

go get github.com/gabriel-vasile/mimetype

Use

The library exposes three functions you can use in order to detect a file type. See Godoc for full reference.

func Detect(in []byte) (mime, extension string) {...}
func DetectReader(r io.Reader) (mime, extension string, err error) {...}
func DetectFile(file string) (mime, extension string, err error) {...}

When detecting from a ReadSeeker interface, such as os.File, make sure to reset the offset of the reader to the beginning if needed:

_, err = file.Seek(0, io.SeekStart)

Supported MIME types

See supported mimes for the list of detected MIME types. If support is needed for a specific file format, please open an issue.

Structure

mimetype uses an hierarchical structure to keep the matching functions. This reduces the number of calls needed for detecting the file type. The reason behind this choice is that there are file formats used as containers for other file formats. For example, Microsoft office files are just zip archives, containing specific metadata files.

structure

Contributing

See CONTRIBUTING.md.

About

A fast golang library for MIME type and file extension detection, based on magic numbers.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Go 100.0%