FTP client package for Go
Go to file
Nick Craig-Wood c0343a706b Fix Stor() no longer reporting errors from the io.Reader passed in
This commit

4a68979b89 always return the ReadResponse error after an upload

Broke the error return from Stor().  If you attempt to upload a file
with Stor() and the io.Reader that you passed in returns an error,
this was not returned by the Stor() command leading the user to think
the file was uploaded correctly.

This was detected by rclone's unit tests and the exact commit was
pinpointed with git commit.

This commit fixes it by returning the error from io.Copy or the error
from ReadResponse - the latter if they are both set.

Fixes #198
2020-09-11 17:14:05 +01: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 Opt-out 2020-07-28 21:13:33 +02:00
conn_test.go Opt-out 2020-07-28 21:13:33 +02:00
debug.go Add DialWithDebugOutput to log commands. 2019-04-17 13:16:26 +02:00
ftp.go Fix Stor() no longer reporting errors from the io.Reader passed in 2020-09-11 17:14:05 +01: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 Opt-out 2020-07-28 21:13:33 +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 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 Merge pull request #183 from jawr/walker_path_fix 2020-07-28 14:05:16 -04: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))