Skip to content

Commit 5f502e8

Browse files
committed
优化上传文件匹配逻辑,支持目录模式匹配
1 parent 9ae6e6c commit 5f502e8

2 files changed

Lines changed: 34 additions & 33 deletions

File tree

pkg/drive/upload.go

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (client *FS) Upload(cfg pkg.UploadConfig, cloud string, locals ...string) e
3535
// up = append(up, u)
3636
continue
3737
}
38-
files, err := client.uploadLocal(dir, local)
38+
files, err := client.uploadLocal(dir, local, cfg.Parten)
3939
if err != nil {
4040
log.Println(err)
4141
continue
@@ -45,9 +45,6 @@ func (client *FS) Upload(cfg pkg.UploadConfig, cloud string, locals ...string) e
4545
task := cfg.NewTask()
4646
uploader := client.api.Uploader()
4747
for _, v := range up {
48-
if !cfg.Match(v.Name()) {
49-
continue
50-
}
5148
r := v
5249
task.Run(func() {
5350
if err = uploader.Write(r); err != nil {
@@ -59,7 +56,7 @@ func (client *FS) Upload(cfg pkg.UploadConfig, cloud string, locals ...string) e
5956
return nil
6057
}
6158

62-
func (client *FS) uploadLocal(parent pkg.File, local string) ([]pkg.Upload, error) {
59+
func (client *FS) uploadLocal(parent pkg.File, local string, parten string) ([]pkg.Upload, error) {
6360
stat, err := os.Stat(local)
6461
if err != nil {
6562
return nil, err
@@ -72,23 +69,40 @@ func (client *FS) uploadLocal(parent pkg.File, local string) ([]pkg.Upload, erro
7269
dirs := map[string]string{
7370
".": parent.Id(),
7471
}
75-
filepath.WalkDir(local, func(path string, d fs.DirEntry, err error) error {
72+
parten = filepath.Join(local, parten)
73+
files, err := filepath.Glob(parten)
74+
if err != nil {
75+
return nil, err
76+
}
77+
for _, localFile := range files {
78+
info, err := os.Stat(localFile)
7679
if err != nil {
77-
return err
80+
log.Println(err)
81+
continue
7882
}
79-
if d.IsDir() {
80-
rel := file.Rel(local, path)
81-
if rel == "." {
82-
return nil
83-
}
84-
f, _ := client.api.Mkdir(parent, rel)
85-
dirs[rel] = f.Id()
86-
return nil
83+
if info.IsDir() {
84+
filepath.WalkDir(localFile, func(path string, d fs.DirEntry, err error) error {
85+
if err != nil {
86+
return err
87+
}
88+
if d.IsDir() {
89+
rel := file.Rel(local, path)
90+
if rel == "." {
91+
return nil
92+
}
93+
f, _ := client.api.Mkdir(parent, rel)
94+
dirs[rel] = f.Id()
95+
return nil
96+
}
97+
dir, _ := filepath.Split(path)
98+
rel := file.Rel(local, dir)
99+
up = append(up, file.NewLocalFile(dirs[rel], path))
100+
return err
101+
})
102+
} else {
103+
up = append(up, file.NewLocalFile(parent.Id(), localFile))
87104
}
88-
dir, _ := filepath.Split(path)
89-
rel := file.Rel(local, dir)
90-
up = append(up, file.NewLocalFile(dirs[rel], path))
91-
return err
92-
})
105+
106+
}
93107
return up, nil
94108
}

pkg/upload.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package pkg
33
import (
44
"errors"
55
"io"
6-
"log"
7-
"path"
86
"strings"
97

108
"github.com/gowsp/cloud189/pkg/util"
@@ -52,14 +50,3 @@ func (c *UploadConfig) Check() (err error) {
5250
c.Parten = strings.TrimSpace(c.Parten)
5351
return nil
5452
}
55-
func (c *UploadConfig) Match(name string) bool {
56-
if c.Parten == "" {
57-
return true
58-
}
59-
val, err := path.Match(c.Parten, name)
60-
if err != nil {
61-
log.Println(err)
62-
return false
63-
}
64-
return val
65-
}

0 commit comments

Comments
 (0)