package file import ( "github.com/Xhofe/alist/conf" "github.com/Xhofe/alist/drivers/base" "github.com/Xhofe/alist/drivers/operate" "github.com/Xhofe/alist/model" "github.com/Xhofe/alist/server/common" "github.com/Xhofe/alist/utils" "github.com/gin-gonic/gin" ) func UploadFiles(c *gin.Context) { path := c.PostForm("path") path = utils.ParsePath(path) token := c.GetHeader("Authorization") if token != conf.Token { password := c.PostForm("password") meta, _ := model.GetMetaByPath(path) if meta == nil || !meta.Upload { common.ErrorStrResp(c, "Not allow upload", 403) return } if meta.Password != "" && meta.Password != password { common.ErrorStrResp(c, "Wrong password", 403) return } } account, path_, driver, err := common.ParsePath(path) if err != nil { common.ErrorResp(c, err, 500) return } form, err := c.MultipartForm() if err != nil { common.ErrorResp(c, err, 400) } files := form.File["files"] if err != nil { return } for i, file := range files { open, err := file.Open() fileStream := model.FileStream{ File: open, Size: uint64(file.Size), ParentPath: path_, Name: file.Filename, MIMEType: file.Header.Get("Content-Type"), } clearCache := false if i == len(files)-1 { clearCache = true } err = operate.Upload(driver, account, &fileStream, clearCache) if err != nil { if i != 0 { _ = base.DeleteCache(path_, account) } common.ErrorResp(c, err, 500) return } } common.SuccessResp(c) }