FTP client package for Go
Go to file
2020-10-21 22:10:46 +02:00
.github stale bot: ignore accepted issues 2020-03-09 18:13:36 +01:00
.travis.yml Fix get of golint 2019-10-19 14:58:47 +02:00
client_test.go Fix issues reported by staticcheck 2020-10-21 22:10:46 +02:00
conn_test.go Fix issues reported by staticcheck 2020-10-21 22:10:46 +02:00
debug.go Add DialWithDebugOutput to log commands. 2019-04-17 13:16:26 +02:00
ftp.go Remove naked returns 2020-10-20 20:51:56 +03:00
go.mod Update dependencies 2020-07-08 08:20:38 +02:00
go.sum Update dependencies 2020-07-08 08:20:38 +02:00
LICENSE Update copyright years. 2013-02-17 10:34:01 +01:00
parse_test.go Use subtests and assert() 2020-07-08 08:33:57 +02:00
parse.go Correctly parse symlink (#152) 2019-06-24 10:48:59 +02:00
README.md add documentation shortcut, to make user able to go there easlity without typing it 2020-07-15 12:50:26 +07:00
scanner_test.go Do not export the scanner type 2017-03-04 13:01:41 +01:00
scanner.go Do not export the scanner type 2017-03-04 13:01:41 +01:00
status_test.go Add status string for unknown status codes 2020-07-08 08:23:44 +02:00
status.go Add status string for unknown status codes 2020-07-08 08:23:44 +02:00
walker_test.go Fix issues reported by staticcheck 2020-10-21 22:10:46 +02:00
walker.go Rework walker.Next to (hopefully) be clearer. Fix issues where it wouldn't correctly walk a directory with one file. Also prevent it trimming leading '/' from root. 2020-06-15 09:33:28 +09:00

goftp

Build Status Coverage Status Go ReportCard godoc.org

A FTP client package for Go

Install

go get -u github.com/jlaffaye/ftp

Documentation

https://pkg.go.dev/github.com/jlaffaye/ftp?tab=doc

Example

c, err := ftp.Dial("ftp.example.org:21", ftp.DialWithTimeout(5*time.Second))
if err != nil {
    log.Fatal(err)
}

err = c.Login("anonymous", "anonymous")
if err != nil {
    log.Fatal(err)
}

// Do something with the FTP conn

if err := c.Quit(); err != nil {
    log.Fatal(err)
}

Store a file example

data := bytes.NewBufferString("Hello World")
err = c.Stor("test-file.txt", data)
if err != nil {
	panic(err)
}

Read a file example

r, err := c.Retr("test-file.txt")
if err != nil {
	panic(err)
}
defer r.Close()

buf, err := ioutil.ReadAll(r)
println(string(buf))