FTP client package for Go
08a1e2e380
if the upload failed we still need to try to read the server response otherwise if the failure is not due to a connection problem, for example the server denied the upload for quota limits, we miss the response and we cannot use the connection to send other commands Here is what happen before this patch: C->S STOR test_file1.dat S->C 150 Using transfer connection S->C 550 Could not transfer file: denying write due to space limit the client does not read the above 550 response and send the next command, so the response for the STOR response will be readed as response for the next command |
||
---|---|---|
.github | ||
.travis.yml | ||
client_test.go | ||
conn_test.go | ||
debug.go | ||
ftp.go | ||
go.mod | ||
go.sum | ||
LICENSE | ||
parse_test.go | ||
parse.go | ||
README.md | ||
scanner_test.go | ||
scanner.go | ||
status_test.go | ||
status.go | ||
walker_test.go | ||
walker.go |
goftp
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))