Backend: Fallback to file extension for mime type detection
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
This commit is contained in:
parent
fb43754d8a
commit
9e37c86b67
3 changed files with 51 additions and 3 deletions
|
@ -228,3 +228,12 @@ func (t FileType) FindFirst(fileName string, dirs []string, baseDir string, stri
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NormalizedExt returns the file extension without dot and in lowercase.
|
||||||
|
func NormalizedExt(fileName string) string {
|
||||||
|
if dot := strings.LastIndex(fileName, "."); dot != -1 && len(fileName[dot+1:]) >= 1 {
|
||||||
|
return strings.ToLower(fileName[dot+1:])
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
|
@ -133,3 +133,40 @@ func TestFileType_FindFirst(t *testing.T) {
|
||||||
assert.Equal(t, Abs("testdata/directory/example.bmp"), result)
|
assert.Equal(t, Abs("testdata/directory/example.bmp"), result)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNormalizedExt(t *testing.T) {
|
||||||
|
t.Run("none", func(t *testing.T) {
|
||||||
|
result := NormalizedExt("testdata/test")
|
||||||
|
assert.Equal(t, "", result)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("dot", func(t *testing.T) {
|
||||||
|
result := NormalizedExt("testdata/test.")
|
||||||
|
assert.Equal(t, "", result)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("test.z", func(t *testing.T) {
|
||||||
|
result := NormalizedExt("testdata/test.z")
|
||||||
|
assert.Equal(t, "z", result)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("test.jpg", func(t *testing.T) {
|
||||||
|
result := NormalizedExt("testdata/test.jpg")
|
||||||
|
assert.Equal(t, "jpg", result)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("test.PNG", func(t *testing.T) {
|
||||||
|
result := NormalizedExt("testdata/test.PNG")
|
||||||
|
assert.Equal(t, "png", result)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("test.MOV", func(t *testing.T) {
|
||||||
|
result := NormalizedExt("testdata/test.MOV")
|
||||||
|
assert.Equal(t, "mov", result)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("test.xmp", func(t *testing.T) {
|
||||||
|
result := NormalizedExt("testdata/test.xMp")
|
||||||
|
assert.Equal(t, "xmp", result)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -30,9 +30,11 @@ func MimeType(filename string) string {
|
||||||
|
|
||||||
if _, err := handle.Read(buffer); err != nil {
|
if _, err := handle.Read(buffer); err != nil {
|
||||||
return ""
|
return ""
|
||||||
} else if t, err := filetype.Get(buffer); err != nil {
|
} else if t, err := filetype.Get(buffer); err == nil && t != filetype.Unknown {
|
||||||
return ""
|
|
||||||
} else {
|
|
||||||
return t.MIME.Value
|
return t.MIME.Value
|
||||||
|
} else if t := filetype.GetType(NormalizedExt(filename)); t != filetype.Unknown {
|
||||||
|
return t.MIME.Value
|
||||||
|
} else {
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue