36 lines
922 B
Go
36 lines
922 B
Go
package request
|
||
|
||
import (
|
||
"path/filepath"
|
||
"strings"
|
||
)
|
||
|
||
type UploadFileRequest struct {
|
||
Folder string `json:"folder" validate:"omitempty,oneof=cover avatar article common"`
|
||
}
|
||
|
||
// AllowedUploadExts 上传文件扩展名白名单(扩展名 → 期望的真实 MIME)。
|
||
var AllowedUploadExts = map[string]string{
|
||
// 图片
|
||
".jpg": "image/jpeg",
|
||
".jpeg": "image/jpeg",
|
||
".png": "image/png",
|
||
".gif": "image/gif",
|
||
".webp": "image/webp",
|
||
// 视频
|
||
".mp4": "video/mp4",
|
||
".webm": "video/webm",
|
||
}
|
||
|
||
// IsAllowedUploadExt 扩展名是否在白名单内(大小写不敏感)
|
||
func IsAllowedUploadExt(ext string) bool {
|
||
_, ok := AllowedUploadExts[strings.ToLower(ext)]
|
||
return ok
|
||
}
|
||
|
||
// MatchUploadMime 校验实际 MIME 与扩展名匹配
|
||
func MatchUploadMime(filename, detectedMime string) bool {
|
||
expected, ok := AllowedUploadExts[strings.ToLower(filepath.Ext(filename))]
|
||
return ok && detectedMime == expected
|
||
}
|