golang 实现ftp客户端上传和下载文件(jlaffaye)

golang 实现ftp客户端上传和下载文件(jlaffaye),第1张

golang 实现ftp客户端上传和下载文件(jlaffaye) 搭建ftp服务器(linux)ftp客户端实现

搭建ftp服务器(linux)

1.下载vsftpd工具
yum install vsftpd -y

2.修改配置
sudo vi /etc/vsftpd/vsftpd.conf
local_root=/home/ftptest
write_enable=YES
anon_mkdir_write_enable=YES

3.添加用户test
mkdir -p /home/ftptest
useradd -r /home/ftptest -M test
passwd test

注:删除用户的命令为userdel -d test

4.修改文件并启动服务
sudo vi /etc/pam.d/vsftpd
#auth required pam_shells.so //注释掉这一行
sudo service vsftpd restart

ftp客户端实现

下载jlaffaye包 go get -u github.com/jlaffaye/ftp

直接上代码实现

package main

import (
	"fmt"
	"github.com/jlaffaye/ftp"
	"io"
	"os"
	"time"
)

//忽略错误处理
func main() {
	//连接远程服务器
	c,_ := ftp.Dial("192.168.3.82:21",ftp.DialWithTimeout(5*time.Second))
	defer c.Quit()
	//登陆
	_ = c.Login("test","xbrother@123")
	_ = c.ChangeDir("/home/ftptest")
	dir,_ := c.CurrentDir()
	fmt.Print("current dir ",dir)
	//上传文件a.txt到远程ftp服务器/home/ftptest/111
	_ =c.MakeDir("111")
	_ = c.ChangeDir("/home/ftptest/111")
	file ,_ := os.Open("a.txt")
	defer file.Close()
	_ = c.Stor("b.txt",file)
	//从ftp服务器下载文件b.txt到本地目录c:\WORK\src\learn\ftptest\c.txt
	f,_:=os.OpenFile("C:\WORK\src\learn\ftptest\c.txt",os.O_RDWR|os.O_CREATE,0777)
	defer f.Close()
	r,_:=c.Retr("/home/ftptest/111/b.txt")
	defer r.Close()
	io.Copy(f,r)
	c.Logout()
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/995666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存