From 13547ec63efc7d1b2beaf94dfb5e595e8dba55fc Mon Sep 17 00:00:00 2001 From: xfy Date: Wed, 3 Jun 2026 17:44:16 +0800 Subject: [PATCH] fix: use defaultMIME fallback in DetectContentType --- internal/mimeutil/detect.go | 8 +++++++- internal/mimeutil/detect_test.go | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/mimeutil/detect.go b/internal/mimeutil/detect.go index fb77457..e4f6256 100644 --- a/internal/mimeutil/detect.go +++ b/internal/mimeutil/detect.go @@ -102,7 +102,7 @@ func SetDefaultType(defaultType string) { // - filePath: 文件路径 // // 返回值: -// - string: MIME 类型,未知类型返回空字符串 +// - string: MIME 类型,未知类型返回 defaultMIME(默认为 application/octet-stream) func DetectContentType(filePath string) string { ext := strings.ToLower(filepath.Ext(filePath)) @@ -151,5 +151,11 @@ func DetectContentType(filePath string) string { entry.element = mimeLRU.PushFront(entry) mimeCache[ext] = entry + if mimeType == "" { + defaultMutex.RLock() + mimeType = defaultMIME + defaultMutex.RUnlock() + } + return mimeType } diff --git a/internal/mimeutil/detect_test.go b/internal/mimeutil/detect_test.go index 9daa82e..ba0bf88 100644 --- a/internal/mimeutil/detect_test.go +++ b/internal/mimeutil/detect_test.go @@ -31,8 +31,8 @@ func TestDetectContentType(t *testing.T) { {"test.WEBMANIFEST", "application/manifest+json"}, {"test.JPG", "image/jpeg"}, // Go 已知,也处理大小写 - // 未知类型 - {"test.unknown", ""}, + // 未知类型 - 回退到 defaultMIME + {"test.unknown", "application/octet-stream"}, } for _, tt := range tests {