1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- *
- webdav上传
- */
- package main
- import (
- "flag"
- "fmt"
- "io/ioutil"
- "log"
- "os"
- "strconv"
- "github.com/studio-b12/gowebdav"
- )
- var (
- davurl = flag.String("dav", "https://cloudreve.jydev.jianyu360.com/dav", "dav地址")
- user = flag.String("user", "jichunling@topnet.net.cn", "用户")
- password = flag.String("password", "imq6aZfwvWdu9XRsd368uywaalD5Jgwf", "密码")
- localdir = flag.String("local", "./attaches", "本地目录")
- remotedir = flag.String("remote", "/%s/北京/东城区/政府", "远程目录")
- limitMiniFileSize = flag.Int64("minisize", 1024, "最小文件大小,不小于1Kb")
- client *gowebdav.Client
- )
- // init
- func init() {
- flag.Parse()
- client = gowebdav.NewAuthClient(*davurl, gowebdav.NewAutoAuth(*user, *password))
- err := client.Connect()
- if err != nil {
- log.Fatal(err)
- }
- }
- // main
- func main() {
- //TODO 遍历目录
- years := []string{"2022", "2023", "2024"}
- for _, y := range years {
- //建立远程目录
- rdir := fmt.Sprintf(*remotedir, y+"年")
- log.Println("上传到远端目录:", rdir)
- if _, err := client.Stat(rdir); err != nil {
- if err = client.MkdirAll(rdir, 0644); err != nil {
- log.Fatal(err)
- }
- }
- //遍历目录
- fs, err := ioutil.ReadDir(*localdir)
- if err != nil {
- log.Fatal(err)
- }
- for _, f := range fs {
- prefix := f.Name()[:4]
- if _, err := strconv.Atoi(prefix); err == nil &&
- prefix == y {
- log.Println(f.Name())
- //上传文件
- localFilePath := fmt.Sprintf("%s/%s", *localdir, f.Name())
- remoteFilePath := fmt.Sprintf("%s/%s", rdir, f.Name())
- //TODO 检查文件大小
- if fi, err := os.Stat(localFilePath); err == nil && fi.Size() <= *limitMiniFileSize {
- log.Println("\t 文件太小:", fi.Size())
- os.Remove(localFilePath)
- } else if err != nil {
- log.Println("\t error: ", err.Error())
- os.Remove(localFilePath)
- continue
- }
- fi, err := os.Open(localFilePath)
- if err != nil {
- log.Println(err.Error())
- continue
- }
- if err = client.WriteStream(remoteFilePath, fi, 0644); err != nil {
- log.Println(err.Error())
- continue
- } else {
- os.Remove(localFilePath)
- }
- }
- }
- }
- log.Println("所有文件上传完毕")
- }
|