h2non / filetype

Fast, dependency-free Go package to infer binary file types based on the magic numbers header signature
https://pkg.go.dev/github.com/h2non/filetype?tab=doc
MIT License
2.05k stars 178 forks source link

Many mime types not recognized #125

Open ivanjaros opened 1 year ago

ivanjaros commented 1 year ago

Like audio/wav won't match the audio/x-wav even though it is perfectly valid mime type. The matchers are too strict when there are multiple variants for many mime types that are valid.

var (
    TypeMidi = newType("mid", "audio/midi")
    TypeMp3  = newType("mp3", "audio/mpeg")
    TypeM4a  = newType("m4a", "audio/m4a")
    TypeOgg  = newType("ogg", "audio/ogg")
    TypeFlac = newType("flac", "audio/x-flac") <---
    TypeWav  = newType("wav", "audio/x-wav") <---
    TypeAmr  = newType("amr", "audio/amr")
    TypeAac  = newType("aac", "audio/aac")
    TypeAiff = newType("aiff", "audio/x-aiff") <---
)

var (
    TypeMp4  = newType("mp4", "video/mp4")
    TypeM4v  = newType("m4v", "video/x-m4v") <---
    TypeMkv  = newType("mkv", "video/x-matroska") <---
    TypeWebm = newType("webm", "video/webm")
    TypeMov  = newType("mov", "video/quicktime")
    TypeAvi  = newType("avi", "video/x-msvideo") <---
    TypeWmv  = newType("wmv", "video/x-ms-wmv") <---
    TypeMpeg = newType("mpg", "video/mpeg")
    TypeFlv  = newType("flv", "video/x-flv") <---
    Type3gp  = newType("3gp", "video/3gpp")
)

This makes IsMIMESupported unusable. For example when uploading files from web browsers. The mime won't match and upload fails.