FTP client package for Go
Go to file
Nick Craig-Wood 36e873b513
Fix GetEntry / MLST for some servers - Fixes #321 (#322)
Some servers seem to send a blank line at the end of an MLST response.

    MLST Download
    250-
    Size=53248;Modify=20230327134339.000;Type=dir; Download

    250 Requested file action okay, completed.

Before this change this would cause the GetEntry method to return this
error.

    unsupported LIST line

This patch ignores blank lines in the MLST response.
2023-05-12 22:29:37 -04:00
.github Bump actions/cache from 3.2.5 to 3.3.1 (#318) 2023-05-12 22:27:45 -04:00
client_test.go Add forceListHidden dial option to force the use of 'LIST -a' command (#271) 2022-09-04 14:43:06 -04:00
conn_test.go Fix GetEntry / MLST for some servers - Fixes #321 (#322) 2023-05-12 22:29:37 -04:00
constants_test.go Add tests for EntryType 2022-03-08 18:57:09 -05:00
debug.go Debug directory listings 2021-10-03 18:40:19 +03:00
ftp.go Fix GetEntry / MLST for some servers - Fixes #321 (#322) 2023-05-12 22:29:37 -04:00
go.mod Bump github.com/stretchr/testify from 1.8.1 to 1.8.2 (#311) 2023-05-12 22:27:57 -04:00
go.sum Bump github.com/stretchr/testify from 1.8.1 to 1.8.2 (#311) 2023-05-12 22:27:57 -04:00
LICENSE Update copyright years. 2013-02-17 10:34:01 +01:00
parse_test.go Fix issues reported by errcheck 2021-03-06 19:36:26 -05:00
parse.go Add MLST command in the form of a Get method (#269) 2022-08-21 17:25:29 -04:00
README.md Add CodeQL and golangci-lint badges 2022-09-07 18:02:26 -04:00
scanner_test.go Fix issues reported by goimports 2021-03-06 19:44:19 -05:00
scanner.go Do not export the scanner type 2017-03-04 13:01:41 +01: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 Add forceListHidden dial option to force the use of 'LIST -a' command (#271) 2022-09-04 14:43:06 -04:00

goftp

Units tests Coverage Status golangci-lint CodeQL Go ReportCard Go Reference

A FTP client package for Go

Install

go get -u github.com/jlaffaye/ftp

Documentation

https://pkg.go.dev/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))