Golang 如何下载ftp文件

前言

业务开发中,有时会遇到依赖方用ftp的方式提供文件下载,而ftp的链接格式如下:

ftp://{用户名}:{密码}@{站点域名}:{端口}/{路径}/{文件名}

由于不是http协议,不能用go自带的http.client下载

因此本文介绍如何下载,读取ftp文件

下载

使用第三方库:github.com/jlaffaye/ftp

func DownloadFtpFile(host string, username, password string, path, fileName string) error {
   // 建立连接,默认用21端口
   c, err := ftp.Dial(host+":21", ftp.DialWithTimeout(5*time.Second))
   if err != nil {
      return err
   }
   defer c.Quit()

   // 登录
   err = c.Login(username, password)
   if err != nil {
      return err
   }

   // 切换到path
   err = c.ChangeDir(path)
   if err != nil {
      return err
   }
    
   // 读取文件
   body, err := c.Retr(fileName)
   if err != nil {
      return err
   }
   defer body.Close()

   // 创建本地文件
   localFile, err := os.Create(fileName)
   if err != nil {
      return err
   }
   defer localFile.Close()

   // 下载到本地
   _, err = io.Copy(localFile, body)
   return nil
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值