fix(file): 修复积分商城图片公开访问

This commit is contained in:
yml2213
2026-11-04 19:31:31 +08:00
parent 46c682cb78
commit 0d12950961
2 changed files with 28 additions and 10 deletions
+25 -10
View File
@@ -94,15 +94,7 @@ func (h *Handler) writeObject(c *gin.Context, publicOnly bool) {
response.BadRequest(c, "文件 key 不正确")
return
}
if publicOnly &&
!strings.HasPrefix(key, "home-banner/") &&
!strings.HasPrefix(key, "avatar/") &&
!strings.HasPrefix(key, "announcement/") &&
!strings.HasPrefix(key, "mohong/") &&
!strings.HasPrefix(key, "crash/") &&
!strings.HasPrefix(key, "aw-recycle/") &&
!strings.HasPrefix(key, "cooperation-feedback/") &&
!strings.HasPrefix(key, "support-qrcode/") {
if publicOnly && !isPublicObjectKey(key) {
response.Error(c, http.StatusNotFound, "not_found", "文件不存在或暂不可访问")
return
}
@@ -142,10 +134,33 @@ func (h *Handler) writeObject(c *gin.Context, publicOnly bool) {
contentType = "application/octet-stream"
}
c.Header("Content-Type", contentType)
c.Header("Cache-Control", "private, max-age=300")
if publicOnly {
c.Header("Cache-Control", "public, max-age=86400")
} else {
c.Header("Cache-Control", "private, max-age=300")
}
c.DataFromReader(http.StatusOK, object.Size, contentType, object.Reader, nil)
}
func isPublicObjectKey(key string) bool {
for _, prefix := range []string{
"home-banner/",
"avatar/",
"announcement/",
"mohong/",
"crash/",
"aw-recycle/",
"cooperation-feedback/",
"support-qrcode/",
"points-mall/",
} {
if strings.HasPrefix(key, prefix) {
return true
}
}
return false
}
func writeFileError(c *gin.Context, err error) {
response.RecordError(c, err)
switch {