add struct upload id
This commit is contained in:
parent
8e6d22ee1d
commit
a07f826510
@ -35,25 +35,32 @@ func (s *Service) UploadCreate(c *gin.Context) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
type UploadPartRequest struct {
|
type UploadUri struct {
|
||||||
UploadId string `form:"upload_id" binding:"required,uuid"`
|
Id string `uri:"upload_id" binding:"required,uuid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type UploadPartQuery struct {
|
||||||
Part uint `form:"part" binding:"required"`
|
Part uint `form:"part" binding:"required"`
|
||||||
PartSha256 string `form:"sha256" binding:"required,sha256"`
|
PartSha256 string `form:"sha256" binding:"required,sha256"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) UploadPart(c *gin.Context) {
|
func (s *Service) UploadPart(c *gin.Context) {
|
||||||
var uploadPart UploadPartRequest
|
var (
|
||||||
if c.BindQuery(&uploadPart) != nil {
|
upload UploadUri
|
||||||
|
uploadPart UploadPartQuery
|
||||||
|
)
|
||||||
|
|
||||||
|
if c.BindUri(&upload) != nil || c.BindQuery(&uploadPart) != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !s.Storage.Exists(StorageTmp, uploadPart.UploadId) {
|
if !s.Storage.Exists(StorageTmp, upload.Id) {
|
||||||
c.AbortWithError(http.StatusNotFound, ErrUploadNotExists)
|
c.AbortWithError(http.StatusNotFound, ErrUploadNotExists)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := os.Create(
|
f, err := os.Create(
|
||||||
s.Storage.Join(StorageTmp, uploadPart.UploadId, fmt.Sprint(uploadPart.Part)),
|
s.Storage.Join(StorageTmp, upload.Id, fmt.Sprint(uploadPart.Part)),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.AbortWithError(http.StatusInternalServerError, err)
|
c.AbortWithError(http.StatusInternalServerError, err)
|
||||||
@ -72,7 +79,7 @@ func (s *Service) UploadPart(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusCreated, gin.H{
|
c.JSON(http.StatusCreated, gin.H{
|
||||||
"upload_id": uploadPart.UploadId,
|
"upload_id": upload.Id,
|
||||||
"part": uploadPart.Part,
|
"part": uploadPart.Part,
|
||||||
"size": w,
|
"size": w,
|
||||||
"sha256": hex.EncodeToString(sha.Sum(nil)),
|
"sha256": hex.EncodeToString(sha.Sum(nil)),
|
||||||
@ -81,9 +88,12 @@ func (s *Service) UploadPart(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) UploadCancel(c *gin.Context) {
|
func (s *Service) UploadCancel(c *gin.Context) {
|
||||||
upload_id := c.Param("upload_id")
|
var upload UploadUri
|
||||||
|
if c.BindUri(&upload) != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if err := s.Storage.Delete(StorageTmp, upload_id); err != nil {
|
if err := s.Storage.Delete(StorageTmp, upload.Id); err != nil {
|
||||||
c.AbortWithError(http.StatusNotFound, ErrUploadNotExists)
|
c.AbortWithError(http.StatusNotFound, ErrUploadNotExists)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -114,7 +124,7 @@ func (s *Service) UploadComplete(c *gin.Context) {
|
|||||||
func (s *Service) UploadInit() {
|
func (s *Service) UploadInit() {
|
||||||
upload := s.Gin.Group("/upload")
|
upload := s.Gin.Group("/upload")
|
||||||
upload.GET("/create", s.UploadCreate)
|
upload.GET("/create", s.UploadCreate)
|
||||||
upload.POST("/part", s.UploadPart)
|
upload.POST("/part/:upload_id", s.UploadPart)
|
||||||
upload.GET("/cancel/:upload_id", s.UploadCancel)
|
upload.GET("/cancel/:upload_id", s.UploadCancel)
|
||||||
upload.POST("/complete/:upload_id", s.UploadComplete)
|
upload.POST("/complete/:upload_id", s.UploadComplete)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user