Golang FTP 库:goftp
admin
10年前
goftp
一个支持Walk的Golang FTP库
特性
- AUTH TLS 支持
- Walk
示例 package main import ( "github.com/dutchcoders/goftp" "crypto/tls" ) func main() { var err error var ftp *goftp.FTP if ftp, err = goftp.Connect("ftp.server.com"); err != nil { panic(err) } defer ftp.Close() config := tls.Config{ InsecureSkipVerify: true, ClientAuth: tls.RequestClientCert, } if err = ftp.AuthTLS(config); err != nil { panic(err) } if err = ftp.Login("username", "password"); err != nil { panic(err) } if err = ftp.Cwd("/"); err != nil { panic(err) } var curpath string if curpath, err = ftp.Pwd("/"); err != nil { panic(err) } fmt.Printf("Current path: %s", curpath) var files []string if files, err = ftp.List(""); err != nil { panic(err) } fmt.Println(files) if file, err := os.Open("/tmp/test.txt"); err!=nil { panic(err) } if err := ftp.Stor("/test.txt", file); err!=nil { panic(err) } err = ftp.Walk("/", func(path string, info os.FileMode, err error) error { w := &bytes.Buffer{} _, err = ftp.Retr(path, func(r io.Reader) error { var hasher = sha256.New() if _, err = io.Copy(hasher, r); err != nil { return err } hash := fmt.Sprintf("%s %x", path, sha256.Sum256(nil)) fmt.Println(hash) return err }) return nil }) }
项目主页:http://www.open-open.com/lib/view/home/1420027646984