Documentation
¶
Index ¶
- type ChunkUploadHandler
- func (h *ChunkUploadHandler) Abort(c *gin.Context)
- func (h *ChunkUploadHandler) Complete(c *gin.Context)
- func (h *ChunkUploadHandler) Init(c *gin.Context)
- func (h *ChunkUploadHandler) Merge(c *gin.Context)
- func (h *ChunkUploadHandler) ReportPartETag(c *gin.Context)
- func (h *ChunkUploadHandler) Resume(c *gin.Context)
- func (h *ChunkUploadHandler) SignParts(c *gin.Context)
- func (h *ChunkUploadHandler) Status(c *gin.Context)
- func (h *ChunkUploadHandler) Upload(c *gin.Context)
- type DirectUploadHandler
- type UploadHandler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ChunkUploadHandler ¶
type ChunkUploadHandler struct {
// contains filtered or unexported fields
}
ChunkUploadHandler 分片上传处理器。
func NewChunkUploadHandler ¶
func NewChunkUploadHandler(svc *service.ChunkUploadService) *ChunkUploadHandler
NewChunkUploadHandler 创建分片上传处理器。
func (*ChunkUploadHandler) Abort ¶
func (h *ChunkUploadHandler) Abort(c *gin.Context)
Abort 处理 DELETE /chunk/:upload_id.
func (*ChunkUploadHandler) Complete ¶ added in v1.2.0
func (h *ChunkUploadHandler) Complete(c *gin.Context)
Complete 处理 POST /chunk/complete——Multipart 路径的合并接口(前端携带 ETag 列表)。 代理路径请继续使用 /chunk/merge/:upload_id。
func (*ChunkUploadHandler) Init ¶
func (h *ChunkUploadHandler) Init(c *gin.Context)
Init 处理 POST /chunk/init——创建分片上传会话。
响应字段按路径分层:
- Instant=true:秒传命中,前端直接完成
- UploadPath="multipart":走方案 A,按 PartURLs 直连云端 PUT
- UploadPath="proxy"(默认):兼容老协议,前端 POST 到 /chunk
func (*ChunkUploadHandler) Merge ¶
func (h *ChunkUploadHandler) Merge(c *gin.Context)
Merge 处理 POST /chunk/merge/:upload_id 代理路径使用。Multipart 路径请使用 POST /chunk/complete(带 parts 请求体)。
func (*ChunkUploadHandler) ReportPartETag ¶ added in v1.2.0
func (h *ChunkUploadHandler) ReportPartETag(c *gin.Context)
ReportPartETag 处理 POST /chunk/parts/report——Multipart 路径下客户端上报单片 ETag。
请求体:
{ "upload_id": "...", "part_num": 3, "etag": "\"abc...\"" }
func (*ChunkUploadHandler) Resume ¶ added in v1.2.0
func (h *ChunkUploadHandler) Resume(c *gin.Context)
Resume 处理 POST /chunk/resume——秒传 + 断点续传查询。
func (*ChunkUploadHandler) SignParts ¶ added in v1.2.0
func (h *ChunkUploadHandler) SignParts(c *gin.Context)
SignParts 处理 POST /chunk/parts/sign——按需为 Multipart 路径的 part 生成预签名 URL。
func (*ChunkUploadHandler) Status ¶
func (h *ChunkUploadHandler) Status(c *gin.Context)
Status 处理 GET /chunk/status/:upload_id.
func (*ChunkUploadHandler) Upload ¶
func (h *ChunkUploadHandler) Upload(c *gin.Context)
Upload 处理 POST /chunk——通过 multipart/form-data 上传单个分片(流式)。
upload_id 和 chunk_index 字段必须出现在 chunk 二进制数据之前。 这是流式 multipart 解析的固有限制。
表单字段:
- upload_id: 会话 ID(必填,必须在 chunk 之前)
- chunk_index: 0 起始的分片索引(必填,必须在 chunk 之前)
- chunk_checksum: 该分片的哈希值(选填)
- chunk: 二进制数据(必填)
type DirectUploadHandler ¶
type DirectUploadHandler struct {
// contains filtered or unexported fields
}
DirectUploadHandler 前端直传云存储的 Gin 处理器。
func NewDirectUploadHandler ¶
func NewDirectUploadHandler( svc *service.DirectUploadService, verifier types.CallbackVerifier, onComplete func(*types.DirectUploadResult), urlBuilder func(storageKey string) string, ) *DirectUploadHandler
NewDirectUploadHandler 创建直传处理器。
urlBuilder 可为 nil;非 nil 时 Callback 路径返回的 result.URL 字段会被填充。
func (*DirectUploadHandler) Callback ¶
func (h *DirectUploadHandler) Callback(c *gin.Context)
Callback 处理 POST /direct/callback — 云存储上传完成回调。
func (*DirectUploadHandler) Complete ¶
func (h *DirectUploadHandler) Complete(c *gin.Context)
Complete 处理 POST /direct/complete — 前端主动确认上传完成。
func (*DirectUploadHandler) HasCallbackVerifier ¶
func (h *DirectUploadHandler) HasCallbackVerifier() bool
HasCallbackVerifier 返回是否配置了回调验签器。
func (*DirectUploadHandler) IssueToken ¶
func (h *DirectUploadHandler) IssueToken(c *gin.Context)
IssueToken 处理 POST /direct/token — 签发 STS 临时凭证。
type UploadHandler ¶
type UploadHandler struct {
// contains filtered or unexported fields
}
UploadHandler 普通单文件上传处理器。
func NewUploadHandler ¶
func NewUploadHandler(svc *service.UploadService) *UploadHandler
NewUploadHandler 创建普通上传处理器。
func (*UploadHandler) Upload ¶
func (h *UploadHandler) Upload(c *gin.Context)
Upload 处理普通单文件上传(multipart/form-data)。
使用 multipart.NewReader 实现真正的流式传输——内存恒定,不受文件大小影响。
支持任意字段顺序。如果 "file" 出现在 "checksum"/"algorithm" 之前, 这些字段为空值(不做哈希校验)。
流程:
- 校验 Content-Type 与 boundary
- 优先按 Request.ContentLength 做前置大小校验(拦截显然超限的请求, 避免恶意客户端先打满磁盘/网络再被事后拦截)
- 流式解析 multipart,将 file 部分交给 Service 处理
表单字段:
- file: 二进制文件(必填)
- checksum: 期望的文件哈希值(选填)
- algorithm: 哈希算法 "md5" 或 "sha256"(选填)