栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

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

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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()
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号