diff --git a/drivers/123/123.go b/drivers/123/123.go index e93f144b..26d87af6 100644 --- a/drivers/123/123.go +++ b/drivers/123/123.go @@ -3,14 +3,15 @@ package _23 import ( "errors" "fmt" + "path/filepath" + "strconv" + "github.com/Xhofe/alist/drivers/base" "github.com/Xhofe/alist/model" "github.com/Xhofe/alist/utils" "github.com/go-resty/resty/v2" jsoniter "github.com/json-iterator/go" log "github.com/sirupsen/logrus" - "path/filepath" - "strconv" ) func (driver Pan123) Login(account *model.Account) error { diff --git a/drivers/123/driver.go b/drivers/123/driver.go index eeb6bebd..1ffa69ef 100644 --- a/drivers/123/driver.go +++ b/drivers/123/driver.go @@ -4,6 +4,13 @@ import ( "crypto/md5" "encoding/hex" "fmt" + "io" + "io/ioutil" + "net/url" + "os" + "path/filepath" + "strconv" + "github.com/Xhofe/alist/conf" "github.com/Xhofe/alist/drivers/base" "github.com/Xhofe/alist/model" @@ -13,12 +20,6 @@ import ( "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3/s3manager" log "github.com/sirupsen/logrus" - "io" - "io/ioutil" - "net/url" - "os" - "path/filepath" - "strconv" ) type Pan123 struct{} @@ -300,46 +301,36 @@ func (driver Pan123) Upload(file *model.FileStream, account *model.Account) erro if !parentFile.IsDir() { return base.ErrNotFolder } - parentFileId, _ := strconv.Atoi(parentFile.Id) + tempFile, err := ioutil.TempFile(conf.Conf.TempDir, "file-*") if err != nil { return err } - defer func() { - _ = tempFile.Close() - _ = os.Remove(tempFile.Name()) - }() - _, err = io.Copy(tempFile, file) - if err != nil { - return err - } - _, err = tempFile.Seek(0, io.SeekStart) - if err != nil { - return err - } + defer tempFile.Close() + defer os.Remove(tempFile.Name()) h := md5.New() - _, err = io.Copy(h, tempFile) - if err != nil { + if _, err = io.Copy(io.MultiWriter(tempFile, h), file); err != nil { return err } etag := hex.EncodeToString(h.Sum(nil)) - log.Debugln("md5:", etag) + _, err = tempFile.Seek(0, io.SeekStart) if err != nil { return err } + data := base.Json{ "driveId": 0, - "duplicate": true, + "duplicate": 2, // 2->覆盖 1->重命名 0->默认 "etag": etag, "fileName": file.GetFileName(), - "parentFileId": parentFileId, + "parentFileId": parentFile.Id, "size": file.GetSize(), "type": 0, } var resp UploadResp _, err = driver.Request("https://www.123pan.com/api/file/upload_request", - base.Post, nil, nil, &data, &resp, false, account) + base.Post, map[string]string{"app-version": "1.1"}, nil, &data, &resp, false, account) //res, err := driver.Post("https://www.123pan.com/api/file/upload_request", data, account) if err != nil { return err