mirror of
https://github.com/simon-ding/polaris.git
synced 2026-03-19 01:37:32 +08:00
fix: alist upload
This commit is contained in:
@@ -5,6 +5,8 @@ import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"polaris/log"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -161,16 +163,19 @@ type UploadStreamResponse struct {
|
||||
} `json:"task"`
|
||||
}
|
||||
|
||||
func (c *Client) UploadStream(reader io.Reader, toDir string) (*UploadStreamResponse, error) {
|
||||
req, err := http.NewRequest(http.MethodPost, c.cfg.URL+streamUploadUrl, reader)
|
||||
func (c *Client) UploadStream(reader io.Reader, size int64, toDir string) (*UploadStreamResponse, error) {
|
||||
req, err := http.NewRequest(http.MethodPut, c.cfg.URL+streamUploadUrl, reader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
req.Header.Add("Authorization", "{{alist_token}}")
|
||||
req.Header.Add("File-Path", toDir)
|
||||
req.Header.Add("As-Task", "true")
|
||||
req.Header.Add("Content-Length", "")
|
||||
|
||||
req.Header.Add("Authorization", c.token)
|
||||
req.Header.Add("File-Path", url.QueryEscape(toDir))
|
||||
//req.Header.Add("As-Task", "true")
|
||||
req.Header.Add("Content-Type", "application/octet-stream")
|
||||
req.ContentLength = size
|
||||
|
||||
log.Infof("headers: %+v, %v", req.Header, req.URL.String())
|
||||
res, err := c.http.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package alist
|
||||
|
||||
import (
|
||||
"os"
|
||||
"polaris/log"
|
||||
"testing"
|
||||
)
|
||||
@@ -25,6 +26,21 @@ func TestLogin(t *testing.T) {
|
||||
} else {
|
||||
log.Infof("ls results: %+v", info)
|
||||
}
|
||||
err = c.Mkdir("/aliyun/test1")
|
||||
log.Errorf("mkdir: %v", err)
|
||||
|
||||
f, err := os.Open("/Users/simonding/Downloads/Steam Link_1.3.9_APKPure.apk")
|
||||
if err != nil {
|
||||
log.Errorf("openfile: %v", err)
|
||||
t.Fail()
|
||||
} else {
|
||||
defer f.Close()
|
||||
ss, _ := f.Stat()
|
||||
log.Infof("upload file size %d", ss.Size())
|
||||
info, err := c.UploadStream(f, ss.Size(), "/aliyun/Steam Link_1.3.9_APKPure.apk")
|
||||
if err != nil {
|
||||
log.Errorf("upload error: %v", err)
|
||||
t.Fail()
|
||||
} else {
|
||||
log.Infof("upload success: %+v", info)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ func (a *Alist) Copy(src, dest string) error {
|
||||
a.progresser = b.Progress
|
||||
|
||||
uploadFunc := func(destPath string, destInfo fs.FileInfo, srcReader io.Reader, mimeType *mimetype.MIME) error {
|
||||
_, err := a.client.UploadStream(srcReader, destPath)
|
||||
_, err := a.client.UploadStream(srcReader, destInfo.Size(), destPath)
|
||||
return err
|
||||
}
|
||||
mkdirFunc := func(dir string) error {
|
||||
|
||||
Reference in New Issue
Block a user