diff --git a/internal/client_channel.go b/internal/client_channel.go index 57791b7..e82a434 100644 --- a/internal/client_channel.go +++ b/internal/client_channel.go @@ -201,7 +201,7 @@ func (t *TClient) getExtByFilenameAndMimeType(filename, mimeType string) string if filename != "" && strings.Contains(filename, ".") { ext = filepath.Ext(filename) if ext != "" { - return ext + return strings.ToLower(ext) } } diff --git a/main_test.go b/main_test.go index e15fd3c..e5da021 100644 --- a/main_test.go +++ b/main_test.go @@ -5,6 +5,7 @@ import ( "context" "mime" "path/filepath" + "strings" "testing" "exporter/database/telegram_resource/public/table" @@ -83,11 +84,34 @@ func Test_PublishGrpc(t *testing.T) { } func Test_Ext(t *testing.T) { - name := "abc.jpg" - ext := filepath.Ext(name) - t.Logf("Name: %s, Ext: %s", name, ext) - - name = "abc_jpg" - ext = filepath.Ext(name) + name := "abc.MOV" + mime := "video/quicktime" + ext := getExtByFilenameAndMimeType(name, mime) t.Logf("Name: %s, Ext: %s", name, ext) } + +func getExtByFilenameAndMimeType(filename, mimeType string) string { + ext := "" + if filename != "" && strings.Contains(filename, ".") { + ext = filepath.Ext(filename) + if ext != "" { + return strings.ToLower(ext) + } + } + + exts, err := mime.ExtensionsByType(mimeType) + if err != nil { + return ext + } + + if len(exts) == 0 { + switch mimeType { + case "application/rar": + ext = ".rar" + } + } else { + ext = exts[len(exts)-1] + } + + return strings.ToLower(ext) +}