修复发布后图片无法看到bug

This commit is contained in:
yml2213
2026-05-23 17:48:56 +08:00
parent 80ae8af375
commit d661a22b8a
4 changed files with 159 additions and 8 deletions
+57 -2
View File
@@ -6,6 +6,7 @@ import (
"strconv"
"hfb_sys/backend/internal/middleware"
filemodule "hfb_sys/backend/internal/modules/file"
"hfb_sys/backend/pkg/response"
"github.com/gin-gonic/gin"
@@ -13,10 +14,11 @@ import (
type Handler struct {
service *Service
storage *filemodule.Storage
}
func NewHandler(service *Service) *Handler {
return &Handler{service: service}
func NewHandler(service *Service, storage *filemodule.Storage) *Handler {
return &Handler{service: service, storage: storage}
}
func (h *Handler) Create(c *gin.Context) {
@@ -215,6 +217,59 @@ func (h *Handler) FindPublic(c *gin.Context) {
response.OK(c, item)
}
func (h *Handler) Cover(c *gin.Context) {
id, ok := parseID(c)
if !ok {
return
}
key, err := h.service.FindPublicCoverKey(id)
if err != nil {
writeListingError(c, err)
return
}
h.writePublicObject(c, key)
}
func (h *Handler) Screenshot(c *gin.Context) {
id, ok := parseID(c)
if !ok {
return
}
index, err := strconv.Atoi(c.Param("index"))
if err != nil || index < 0 {
response.BadRequest(c, "截图序号不正确")
return
}
key, err := h.service.FindPublicScreenshotKey(id, index)
if err != nil {
writeListingError(c, err)
return
}
h.writePublicObject(c, key)
}
func (h *Handler) writePublicObject(c *gin.Context, key string) {
if h.storage == nil {
response.ServiceUnavailable(c, "文件存储未连接")
return
}
object, err := h.storage.Get(c.Request.Context(), key)
if err != nil {
response.Error(c, http.StatusNotFound, "not_found", "图片不存在或暂不可访问")
return
}
defer func() {
_ = object.Reader.Close()
}()
contentType := object.ContentType
if contentType == "" {
contentType = "application/octet-stream"
}
c.Header("Content-Type", contentType)
c.Header("Cache-Control", "public, max-age=300")
c.DataFromReader(http.StatusOK, object.Size, contentType, object.Reader, nil)
}
func (h *Handler) ListMine(c *gin.Context) {
ownerID, ok := currentUserID(c)
if !ok {