Golang FTP 库:goftp

admin 9年前

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