使用github.com/jlaffaye/ftp库可实现Go语言FTP客户端,支持连接、登录、上传下载及目录操作。示例代码展示连接至服务器、认证、列出文件、上传test.txt并下载验证内容,最后关闭连接。注意FTP无加密,敏感数据应使用SFTP或FTPS。

在Golang中实现一个简单FTP客户端,可以使用第三方库来处理FTP协议,因为Go标准库不包含原生的FTP支持。目前最常用且维护良好的库是 github.com/jlaffaye/ftp。下面介绍如何用它实现一个基础的FTP客户端。
安装FTP库
使用以下命令安装 jlaffaye/ftp 库:
go get github.com/jlaffaye/ftp
连接到FTP服务器
导入包后,创建连接并登录:
conn, err := ftp.Connect("ftp.example.com:21")if err != nil { log.Fatal(err)}defer conn.Quit()err = conn.Login("username", "password")if err != nil { log.Fatal(err)}
Connect 函数建立TCP连接,Login 方法发送用户名和密码进行认证。
立即学习“go语言免费学习笔记(深入)”;
常用操作示例
连接成功后,可以执行文件上传、下载、列出目录等操作。
列出远程目录内容
entries, err := conn.List("/")if err != nil { log.Fatal(err)}for _, entry := range entries { fmt.Printf("%s %d %sn", entry.Name, entry.Size, entry.Time)}
上传文件(通过字节流)
data := bytes.NewBufferString("Hello, FTP!")err = conn.Stor("hello.txt", data)if err != nil { log.Fatal(err)}
下载文件
r, err := conn.Retr("/hello.txt")if err != nil { log.Fatal(err)}defer r.Close()buf, _ := io.ReadAll(r)fmt.Println(string(buf))
删除文件
err = conn.Delete("/hello.txt")if err != nil { log.Fatal(err)}
重命名文件
err = conn.Rename("hello.txt", "hi.txt")if err != nil { log.Fatal(err)}
完整示例代码片段
整合上面的操作,一个最小可运行的FTP客户端如下:
package mainimport ( "bytes" "fmt" "log" "github.com/jlaffaye/ftp")func main() { conn, err := ftp.Connect("ftp.example.com:21") if err != nil { log.Fatal(err) } defer conn.Quit() err = conn.Login("your-username", "your-password") if err != nil { log.Fatal(err) } // 列出根目录 entries, _ := conn.List("/") for _, e := range entries { fmt.Printf("File: %s, Size: %dn", e.Name, e.Size) } // 上传测试文件 data := bytes.NewBufferString("This is a test file.") conn.Stor("test.txt", data) // 下载确认 r, _ := conn.Retr("test.txt") content, _ := io.ReadAll(r) fmt.Println("Downloaded:", string(content)) r.Close()}
基本上就这些。使用 github.com/jlaffaye/ftp 能快速实现FTP功能,适合脚本、自动化任务或轻量级文件传输需求。注意FTP不加密,敏感场景建议用SFTP或FTPS。
以上就是如何在Golang中实现简单FTP客户端的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1409878.html
微信扫一扫
支付宝扫一扫