From b804741e274d365627afa359aaf6eb4a6bf21b3a Mon Sep 17 00:00:00 2001 From: nyne Date: Mon, 1 Sep 2025 17:51:06 +0800 Subject: [PATCH] enhance file download handling to track real users --- server/api/file.go | 2 +- server/service/file.go | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/server/api/file.go b/server/api/file.go index 25f904d..b99fa23 100644 --- a/server/api/file.go +++ b/server/api/file.go @@ -205,7 +205,7 @@ func deleteFile(c fiber.Ctx) error { func downloadFile(c fiber.Ctx) error { cfToken := c.Query("cf_token") - s, filename, err := service.DownloadFile(c.Params("id"), cfToken) + s, filename, err := service.DownloadFile(c.Params("id"), cfToken, c.Locals("real_user") == true) if err != nil { return err } diff --git a/server/service/file.go b/server/service/file.go index a8a5f76..0bdb825 100644 --- a/server/service/file.go +++ b/server/service/file.go @@ -389,7 +389,7 @@ func GetFile(fid string) (*model.FileView, error) { } // DownloadFile handles the file download request. Return a presigned URL or a direct file path. -func DownloadFile(fid, cfToken string) (string, string, error) { +func DownloadFile(fid, cfToken string, isRealUser bool) (string, string, error) { file, err := dao.GetFile(fid) if err != nil { log.Error("failed to get file: ", err) @@ -436,9 +436,11 @@ func DownloadFile(fid, cfToken string) (string, string, error) { return "", "", model.NewInternalServerError("failed to download file from storage") } - err = dao.AddResourceDownloadCount(file.ResourceID) - if err != nil { - log.Errorf("failed to add resource download count: %v", err) + if isRealUser { + err = dao.AddResourceDownloadCount(file.ResourceID) + if err != nil { + log.Errorf("failed to add resource download count: %v", err) + } } return path, file.Filename, nil