ftps-client-go/Multi-Upload.txt
2023-11-05 00:16:24 +08:00

50 lines
1.0 KiB
Plaintext

func _Upload(client *goftp.Client, local, remote string) {
files := make([]string, 0)
if strings.HasPrefix(local, "@") {
rdr, err := os.Open(strings.TrimPrefix(local, "@"))
if err != nil {
log.Printf("[ERR] %s\r\n", err.Error())
}
buf := bufio.NewScanner(rdr)
for buf.Scan() {
if buf.Err() != nil {
break
}
lineStr := strings.TrimSpace(buf.Text())
if lineStr == "" {
continue
}
files = append(files, lineStr)
}
} else {
files = append(files, local)
}
for i, f := range files {
log.Printf("[MSG] Uploading %d: %s\r\n", i+1, f)
rst := ""
for r := 0; r <= retry; r++ {
if r > 0 {
time.Sleep(time.Millisecond * 500)
log.Printf("[MSG] Retrying %d: %s\r\n", r, f)
}
rdr, err := os.Open(f)
if err != nil {
rdr.Close()
rst = err.Error()
continue
}
err = client.Store(remote, rdr)
if err != nil {
rdr.Close()
rst = err.Error()
continue
}
if rst != "" {
log.Printf("[ERR] Upload NG: %s\r\n", f)
}
log.Printf("[MSG] Upload OK: %s\r\n", f)
}
}
}