package main
import (
"bitbucket.org/zombiezen/ftp"
"fmt"
"io/ioutil"
"os"
)
func checkerr(err error) {
if err != nil {
fmt.Println("Now error:", err)
}
}
func main() {
//登入
c, err := ftp.Dial("tcp", "58.246.000.000:21")
checkerr(err)
err = c.Login("user", "pass")
checkerr(err)
//命令
reply, err := c.Do("mkd /test")
checkerr(err)
fmt.Println("command info:", reply.String())
fmt.Println("command code:", reply.Code)
//获得数据,下载
data, err := c.Binary("retr remotedataname.txt")//Binary是使用二进制,Text的话使用文本
checkerr(err)
a := make([]byte, 2000)//创建个容器
data.Read(a) //将下载的数据读到容器里,暂时没有做buffer
fmt.Println("list:", string(a)) //打印出remotedataname.txt的内容
data.Close()
//写入数据,上传
b, _ := ioutil.ReadFile("/path/to/ftptest.txt") //指定需上传的文件
rwc, _ := c.Binary("Stor test/stor.txt") //指定传到服务器的名字
rwc.Write(b)//开始写(传)
rwc.Close()
}
上面代码上出现的怪命令,如Stor,retr,mkd等,都是ftp的rfc上规定的,请看下面
http://wenku.baidu.com/view/fd5c3611f18583d049645969.html
telnet ftpserver 21
user username
pass password
help
help mkd
未完待续。。。。