feat: 支持 targetDir 指定上传目标目录(网盘式),固定路径模式不变
- 改动:init/check 接受可选 targetDir(相对 CloudDir,SanitizeDir 校验),merge 物理落盘 CloudDir/<targetDir>/ - 秒传跨目录 copy-on-hit:库把旧物理文件复制进目标目录,OnInstantHit 携带新路径;源缺失回退正常上传 - 断点续传按目录隔离:同 MD5 在途任务目录不同则另起新任务 - TaskInfo 新增 TargetDir(宿主须持久化);Repository 12 方法接口零变更,向后兼容 v1.0.x - 新增 dir.go(SanitizeDir/路径拼装反解/copyFile)与 service_test.go(10 个用例:双模式秒传/续传隔离/merge 回归) - 原因:上传位置原本固定在 CloudDir 根,宿主无法实现网盘式选目录上传
This commit is contained in:
@@ -9,10 +9,11 @@ import (
|
||||
|
||||
// Mount 挂载分片上传路由到 r(宿主自行决定路由组,如 api.Group("/upload")):
|
||||
//
|
||||
// POST /init 初始化(JSON:fileName/fileSize/fileMD5/mimeType/chunkSize/totalChunk)
|
||||
// POST /init 初始化(JSON:fileName/fileSize/fileMD5/mimeType/chunkSize/totalChunk
|
||||
// + 可选 targetDir:目标目录,相对 CloudDir,空=根目录/固定路径模式)
|
||||
// POST /chunk 上传分片(multipart:uploadId/chunkIndex/chunk),幂等
|
||||
// POST /merge 合并分片(JSON:uploadId),幂等
|
||||
// GET /check?fileMD5= 秒传/续传检查
|
||||
// GET /check?fileMD5=&targetDir= 秒传/续传检查(targetDir 可选)
|
||||
// GET /task/:uploadId 任务详情与已确认分片
|
||||
// DELETE /task/:uploadId 取消任务并清理
|
||||
//
|
||||
@@ -88,7 +89,7 @@ func Mount(r *gin.RouterGroup, opts Options, repo Repository, mos ...MountOption
|
||||
})
|
||||
|
||||
r.GET("/check", func(c *gin.Context) {
|
||||
resp, err := svc.check(c.Query("fileMD5"))
|
||||
resp, err := svc.check(c.Query("fileMD5"), c.Query("targetDir"))
|
||||
opts.Envelope(c, resp, err)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user