handler

package
v1.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 13, 2026 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Overview

Package handler provides upload HTTP API handlers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BatchDownloadFiles

func BatchDownloadFiles(c *gin.Context)

BatchDownloadFiles 批量打包 ZIP 下载接口 @Summary 批量打包下载 @Description 传入多个文件 ID,后台实时将其打包压缩为 ZIP 流并输出,自动处理文件名重复冲突 @Tags admin @Accept json @Produce octet-stream @Param request body handler.batchDownloadRequest true "包含文件 ID 数组 of string 的请求体" @Security SessionCookie @Success 200 {file} file "成功下载打包后的 ZIP" @Failure 400 {object} response.Any "参数错误" @Failure 500 {object} response.Any "打包失败" @Router /api/v1/admin/uploads/download/batch [post]

func DeleteFile

func DeleteFile(c *gin.Context)

DeleteFile 软删除文件记录 @Summary 删除文件 @Description 将文件状态置为 deleted(软删除),不会立即清理底层存储对象 @Tags admin @Produce json @Param id path string true "文件 ID" @Security SessionCookie @Success 200 {object} response.Any "删除成功" @Failure 403 {object} response.Any "无权操作" @Failure 404 {object} response.Any "文件不存在" @Router /api/v1/admin/uploads/{id} [delete]

func DeleteMyFile

func DeleteMyFile(c *gin.Context)

DeleteMyFile 软删除当前用户本人的文件 @Summary 删除我的文件 @Description 将当前用户本人的文件状态置为 deleted(软删除) @Tags upload @Produce json @Param id path string true "文件 ID" @Security SessionCookie @Success 200 {object} response.Any "删除成功" @Failure 403 {object} response.Any "无权操作" @Failure 404 {object} response.Any "文件不存在" @Router /api/v1/upload/{id} [delete]

func DownloadFile

func DownloadFile(c *gin.Context)

DownloadFile 通用单文件下载接口 @Summary 下载单文件 @Description 根据文件 ID 获取文件,以附件形式 (Attachment) 强制开启客户端浏览器下载 @Tags admin @Produce octet-stream @Param id path string true "文件 ID" @Param quality query string false "图片质量 (low, medium, high, origin),默认为 origin" @Security SessionCookie @Success 200 {file} file "成功下载文件" @Failure 400 {object} response.Any "参数错误" @Failure 404 {object} response.Any "文件不存在" @Failure 500 {object} response.Any "服务内部错误" @Router /api/v1/admin/uploads/download/{id} [get]

func GetDistinctUploadTypes

func GetDistinctUploadTypes(c *gin.Context)

GetDistinctUploadTypes 获取数据库中所有已存在的文件业务类型 @Summary 获取文件业务类型列表 @Description 返回数据库中所有已上传文件实际拥有的业务类型列表 @Tags admin @Produce json @Security SessionCookie @Success 200 {object} response.Any{data=[]string} "业务类型列表" @Failure 401 {object} response.Any "未登录" @Failure 403 {object} response.Any "无管理员权限" @Failure 500 {object} response.Any "内部错误" @Router /api/v1/admin/uploads/types [get]

func GetFileStats

func GetFileStats(c *gin.Context)

GetFileStats 获取系统上传的文件统计数据 @Summary 获取文件统计数据 @Description 返回系统级的总文件数、占用大小、最近 7 天新增趋势、文件类型/格式分布等数据 @Tags admin @Produce json @Security SessionCookie @Success 200 {object} response.Any{data=fileStatsResponse} "获取成功" @Failure 401 {object} response.Any "未登录" @Failure 403 {object} response.Any "无管理员权限" @Failure 500 {object} response.Any "内部错误" @Router /api/v1/admin/uploads/stats [get]

func ListFiles

func ListFiles(c *gin.Context)

ListFiles 获取系统上传的文件列表 @Summary 获取文件列表 @Description 分页获取系统上传的文件列表,支持文件名关键词、业务类型、扩展名、上传用户ID过滤 @Tags admin @Produce json @Param page query int false "页码(默认 1)" @Param page_size query int false "每页数量(默认 20,最大 100)" @Param keyword query string false "文件名关键词(模糊匹配)" @Param type query string false "业务分类过滤" @Param extension query string false "扩展名过滤" @Param user_id query uint64 false "上传用户 ID" @Security SessionCookie @Success 200 {object} response.Any{data=listFilesResponse} "查询成功" @Failure 401 {object} response.Any "未登录" @Failure 403 {object} response.Any "无管理员权限" @Router /api/v1/admin/uploads [get]

func ListMyFiles

func ListMyFiles(c *gin.Context)

ListMyFiles 获取当前用户上传的文件列表 @Summary 获取我的文件列表 @Description 分页获取当前登录用户上传的文件,支持文件名关键词、业务类型、扩展名过滤 @Tags upload @Produce json @Param page query int false "页码(默认 1)" @Param page_size query int false "每页数量(默认 20,最大 100)" @Param keyword query string false "文件名关键词(模糊匹配)" @Param type query string false "业务分类过滤" @Param extension query string false "扩展名过滤" @Security SessionCookie @Success 200 {object} response.Any{data=listMyFilesResponse} "查询成功" @Failure 401 {object} response.Any "未登录" @Router /api/v1/upload/my [get]

func UpdateMyFile

func UpdateMyFile(c *gin.Context)

UpdateMyFile 更新当前用户本人的文件信息 @Summary 更新我的文件信息 @Description 更新当前用户本人的文件名或访问权限模式 (AccessMode) @Tags upload @Accept json @Produce json @Param id path string true "文件 ID" @Param request body updateMyFileRequest true "更新字段" @Security SessionCookie @Success 200 {object} response.Any{data=model.Upload} "更新成功" @Failure 403 {object} response.Any "无权操作" @Failure 404 {object} response.Any "文件不存在" @Router /api/v1/upload/{id} [put]

func UploadFile

func UploadFile(c *gin.Context)

UploadFile 通用上传文件接口 @Summary 上传文件 @Description 支持各种类型的通用文件上传,支持自动文件类型检测、哈希计算与“秒传”去重 @Tags upload @Accept multipart/form-data @Produce json @Param file formData file true "要上传的文件" @Param type formData string false "业务分类 (例如: avatar, attachment, doc,默认为 generic)" @Param metadata formData string false "额外的 JSON 格式元数据" @Security SessionCookie @Success 200 {object} response.Any{data=model.Upload} "上传成功" @Failure 400 {object} response.Any "请求参数错误或文件受限" @Failure 401 {object} response.Any "未登录" @Failure 500 {object} response.Any "内部错误" @Router /api/v1/upload [post]

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL