FTP client package for Go
Go to file
2020-03-31 16:49:19 +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 Add DialWithOptions 2019-04-10 20:25:16 +02:00
conn_test.go Replace DialWithOptions with Dial 2019-04-23 14:04:25 +02:00
debug.go Add DialWithDebugOutput to log commands. 2019-04-17 13:16:26 +02:00
ftp.go Merge pull request #141 from johnepiscopo/add-walk 2020-03-13 11:03:37 -04:00
go.mod Create Go module. 2019-10-14 21:14:25 +02:00
go.sum Create Go module. 2019-10-14 21:14:25 +02:00
LICENSE Update copyright years. 2013-02-17 10:34:01 +01:00
parse_test.go Correctly parse symlink (#152) 2019-06-24 10:48:59 +02:00
parse.go Correctly parse symlink (#152) 2019-06-24 10:48:59 +02:00
README.md Add close on read example 2020-03-31 16:49:19 +02: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 tests for StatusText 2019-01-26 09:10:51 +01:00
status.go StatusText returns a text for the FTP status code 2019-01-22 14:54:48 +01:00
walker_test.go Renamed Step func to Next() as per PR comments 2019-05-20 08:56:38 +01:00
walker.go Fixed a typo so that we are no longer ignoring an error and am now using path.Join instead of fmt.Sprintf() 2020-03-10 14:26:54 +00:00

goftp

Build Status Coverage Status Go ReportCard godoc.org

A FTP client package for Go

Install

go get -u github.com/jlaffaye/ftp

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))