mirror of
https://github.com/halejohn/Cloudreve.git
synced 2026-01-26 09:34:57 +08:00
Feat: cancel upload session in slave node
This commit is contained in:
@@ -28,77 +28,6 @@ func SlaveUpload(c *gin.Context) {
|
||||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
|
||||
//// 创建上下文
|
||||
//ctx, cancel := context.WithCancel(context.Background())
|
||||
//ctx = context.WithValue(ctx, fsctx.GinCtx, c)
|
||||
//defer cancel()
|
||||
//
|
||||
//// 创建匿名文件系统
|
||||
//fs, err := filesystem.NewAnonymousFileSystem()
|
||||
//if err != nil {
|
||||
// c.JSON(200, serializer.Err(serializer.CodePolicyNotAllowed, err.Error(), err))
|
||||
// return
|
||||
//}
|
||||
//fs.Handler = local.Driver{}
|
||||
//
|
||||
//// 从请求中取得上传策略
|
||||
//uploadPolicyRaw := c.GetHeader("X-Cr-Policy")
|
||||
//if uploadPolicyRaw == "" {
|
||||
// c.JSON(200, serializer.ParamErr("未指定上传策略", nil))
|
||||
// return
|
||||
//}
|
||||
//
|
||||
//// 解析上传策略
|
||||
//uploadPolicy, err := serializer.DecodeUploadPolicy(uploadPolicyRaw)
|
||||
//if err != nil {
|
||||
// c.JSON(200, serializer.ParamErr("上传策略格式有误", err))
|
||||
// return
|
||||
//}
|
||||
//ctx = context.WithValue(ctx, fsctx.UploadPolicyCtx, *uploadPolicy)
|
||||
//
|
||||
//// 取得文件大小
|
||||
//fileSize, err := strconv.ParseUint(c.Request.Header.Get("Content-Length"), 10, 64)
|
||||
//if err != nil {
|
||||
// c.JSON(200, ErrorResponse(err))
|
||||
// return
|
||||
//}
|
||||
//
|
||||
//// 解码文件名和路径
|
||||
//fileName, err := url.QueryUnescape(c.Request.Header.Get("X-Cr-FileName"))
|
||||
//if err != nil {
|
||||
// c.JSON(200, ErrorResponse(err))
|
||||
// return
|
||||
//}
|
||||
//
|
||||
//fileData := fsctx.FileStream{
|
||||
// MIMEType: c.Request.Header.Get("Content-Type"),
|
||||
// File: c.Request.Body,
|
||||
// Name: fileName,
|
||||
// Size: fileSize,
|
||||
//}
|
||||
//
|
||||
//// 给文件系统分配钩子
|
||||
//fs.Use("BeforeUpload", filesystem.HookSlaveUploadValidate)
|
||||
//fs.Use("AfterUploadCanceled", filesystem.HookDeleteTempFile)
|
||||
//fs.Use("AfterUpload", filesystem.SlaveAfterUpload)
|
||||
//fs.Use("AfterValidateFailed", filesystem.HookDeleteTempFile)
|
||||
//
|
||||
////// 是否允许覆盖
|
||||
////if c.Request.Header.Get("X-Cr-Overwrite") == "false" {
|
||||
//// fileData.Mode = fsctx.Create
|
||||
////}
|
||||
//
|
||||
//// 执行上传
|
||||
//err = fs.LocalUpload(ctx, &fileData)
|
||||
//if err != nil {
|
||||
// c.JSON(200, serializer.Err(serializer.CodeUploadFailed, err.Error(), err))
|
||||
// return
|
||||
//}
|
||||
//
|
||||
//c.JSON(200, serializer.Response{
|
||||
// Code: 0,
|
||||
//})
|
||||
}
|
||||
|
||||
// SlaveGetUploadSession 从机创建上传会话
|
||||
@@ -116,6 +45,21 @@ func SlaveGetUploadSession(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// SlaveDeleteUploadSession 从机删除上传会话
|
||||
func SlaveDeleteUploadSession(c *gin.Context) {
|
||||
// 创建上下文
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
var service explorer.UploadSessionService
|
||||
if err := c.ShouldBindUri(&service); err == nil {
|
||||
res := service.SlaveDelete(ctx, c)
|
||||
c.JSON(200, res)
|
||||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
}
|
||||
|
||||
// SlaveDownload 从机文件下载,此请求返回的HTTP状态码不全为200
|
||||
func SlaveDownload(c *gin.Context) {
|
||||
// 创建上下文
|
||||
|
||||
@@ -46,9 +46,15 @@ func InitSlaveRouter() *gin.Engine {
|
||||
// 接收主机心跳包
|
||||
v3.POST("heartbeat", controllers.SlaveHeartbeat)
|
||||
// 上传
|
||||
v3.POST("upload/:sessionId", controllers.SlaveUpload)
|
||||
// 创建上传会话上传
|
||||
v3.PUT("upload", controllers.SlaveGetUploadSession)
|
||||
upload := v3.Group("upload")
|
||||
{
|
||||
// 上传分片
|
||||
upload.POST(":sessionId", controllers.SlaveUpload)
|
||||
// 创建上传会话上传
|
||||
upload.PUT("", controllers.SlaveGetUploadSession)
|
||||
// 删除上传会话
|
||||
upload.DELETE(":sessionId", controllers.SlaveDeleteUploadSession)
|
||||
}
|
||||
// 下载
|
||||
v3.GET("download/:speed/:path/:name", controllers.SlaveDownload)
|
||||
// 预览 / 外链
|
||||
|
||||
Reference in New Issue
Block a user