帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:golang  wal  SUP  FTP  
Golang FTP library with Walk support.

  • 源代码名称:goftp
  • 源代码网址:http://www.github.com/dutchcoders/goftp
  • goftp源代码文档
  • goftp源代码下载
  • Git URL:
    git://www.github.com/dutchcoders/goftp.git
  • Git Clone代码到本地:
    git clone http://www.github.com/dutchcoders/goftp
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/dutchcoders/goftp
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • goftp

    带有漫游支持的Golang FTP库。

    特性

    • 认证TLS支持
    • 步行

    示例

    
    
    
    
    package main
    
    
    
    import (
    
    
     "crypto/sha256"
    
    
     "crypto/tls"
    
    
     "fmt"
    
    
     "io"
    
    
     "os"
    
    
    
     "encoding/hex"
    
    
     "gopkg.in/dutchcoders/goftp.v1"
    
    
    )
    
    
    
    func main() {
    
    
     var err error
    
    
     var ftp *goftp.FTP
    
    
    
     // For debug messages: goftp.ConnectDbg("ftp.server.com:21")
    
    
     if ftp, err = goftp.Connect("ftp.server.com:21"); err!= nil {
    
    
     panic(err)
    
    
     }
    
    
    
     defer ftp.Close()
    
    
     fmt.Println("Successfully connected to", server)
    
    
    
     // TLS client authentication
    
    
     config := tls.Config{
    
    
     InsecureSkipVerify: true,
    
    
     ClientAuth: tls.RequestClientCert,
    
    
     }
    
    
    
     if err = ftp.AuthTLS(config); err!= nil {
    
    
     panic(err)
    
    
     }
    
    
    
     // Username/password authentication
    
    
     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)
    
    
    
     // Get directory listing
    
    
     var files []string
    
    
     if files, err = ftp.List(""); err!= nil {
    
    
     panic(err)
    
    
     }
    
    
     fmt.Println("Directory listing:", files)
    
    
    
     // Upload a file
    
    
     var file *os.File
    
    
     if file, err = os.Open("/tmp/test.txt"); err!= nil {
    
    
     panic(err)
    
    
     }
    
    
    
     if err := ftp.Stor("/test.txt", file); err!= nil {
    
    
     panic(err)
    
    
     }
    
    
    
     // Download each file into local memory, and calculate it's sha256 hash
    
    
     err = ftp.Walk("/", func(path string, info os.FileMode, err error) error {
    
    
     _, 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, hex.EncodeToString(hasher.Sum(nil)))
    
    
     fmt.Println(hash)
    
    
    
     return err
    
    
     })
    
    
    
     return nil
    
    
     })
    
    
    }
    
    
    
    

    捐赠

    欢迎捐赠。

    • Sourav Datta: 针对匿名用户登录和多行返回状态的工作。
    • Vincenzo Spesa: 针对特定ftp服务器解决登录问题的工作

    创建者

    Remco Verhoef

    版权和许可证

    代码和文档版权 2011 -2014 Remco Verhoef。 在许可下的代码发布。



    文章标签:SUP  golang  wal  FTP  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语