50 lines
1.0 KiB
Plaintext
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)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|