こちらのライブラリーを使いました。
studio-b12/gowebdav
フォルダーの一覧
webdav_list.go
// ---------------------------------------------------------------
//
// webdav_list.go
//
// Mar/04/2021
// ---------------------------------------------------------------
package main
import (
"fmt"
"os"
"github.com/studio-b12/gowebdav"
)
// ---------------------------------------------------------------
func main() {
fmt.Fprintf (os.Stderr,"*** 開始 ***\n")
server := "https://example.synology.me:5006"
user := "scott"
password := "secret"
cc := gowebdav.NewClient(server, user, password)
files, _ := cc.ReadDir("/homes/scott/tmp")
for _, file := range files {
fmt.Println(file.Name())
}
fmt.Fprintf (os.Stderr,"*** 終了 ***\n")
}
// ---------------------------------------------------------------
ファイルのアップロード
webdav_put.go
// ---------------------------------------------------------------
//
// webdav_put.go
//
// Mar/04/2021
// ---------------------------------------------------------------
package main
import (
"fmt"
"os"
"github.com/studio-b12/gowebdav"
)
// ---------------------------------------------------------------
func main() {
fmt.Fprintf (os.Stderr,"*** 開始 ***\n")
server := "https://example.synology.me:5006"
user := "scott"
password := "secret"
cc := gowebdav.NewClient(server, user, password)
webdavFilePath := "/homes/scott/tmp/tmp02.txt"
localFilePath := "./tmp02.txt"
file, _ := os.Open(localFilePath)
defer file.Close()
cc.WriteStream(webdavFilePath, file, 0644)
fmt.Fprintf (os.Stderr,"*** 終了 ***\n")
}
// ---------------------------------------------------------------
ファイルのダウンロード
webdav_get.go
// ---------------------------------------------------------------
//
// webdav_get.go
//
// Mar/04/2021
// ---------------------------------------------------------------
package main
import (
"fmt"
"os"
"io"
"github.com/studio-b12/gowebdav"
)
// ---------------------------------------------------------------
func main() {
fmt.Fprintf (os.Stderr,"*** 開始 ***\n")
server := "https://example.synology.me:5006"
user := "scott"
password := "secret"
cc := gowebdav.NewClient(server, user, password)
webdavFilePath := "/homes/scott/tmp/tmp01.txt"
localFilePath := "./tmp01.txt"
reader, _ := cc.ReadStream(webdavFilePath)
file, _ := os.Create(localFilePath)
defer file.Close()
io.Copy(file, reader)
fmt.Fprintf (os.Stderr,"*** 終了 ***\n")
}
// ---------------------------------------------------------------
実行方法についてはこちら
https://qiita.com/ekzemplaro/items/0781f7d242cdda52eb87
次のファイルが作成されます。
go.mod
go.sum