Я пытаюсь загрузить файл на сервер, используя FTP (используя библиотеку goftp ). Вот мой текущий код:
package main
import (
"crypto/tls"
"github.com/dutchcoders/goftp"
"fmt"
"strings"
"path/filepath"
"os"
)
var client *goftp.FTP
func main() {
// connect to FTP
client, err := goftp.ConnectDbg("192.168.206.226:21")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer client.Close()
config := tls.Config{
InsecureSkipVerify: true,
ClientAuth: tls.RequestClientCert,
}
if err = client.AuthTLS(&config); err != nil {
fmt.Println(err)
os.Exit(1)
}
if err := client.Login("aaa", "bbbb"); err != nil {
fmt.Println(err)
os.Exit(1)
}
// upload new S10 file using FTP
err = filepath.Walk("c:\\Temp", upload)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}
func upload(path string, f os.FileInfo, err error) error {
if strings.Compare(f.Name(), "S10") == 0 {
path := strings.TrimSuffix(path, f.Name())
var file *os.File
if file, err = os.Open(path); err != nil {
fmt.Println(err)
os.Exit(1)
}
defer file.Close()
if err := client.Stor("/sd1/myFile", file); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
return nil
}
Я следовал коду, доступному на странице goftp github, но он не работает для меня. Я всегда получаю эту ошибку:
go : 2018/05/09 10:23:28 < 220 192.168.206.226 FTP server (QNXNTO-ftpd 20081216) ready.
At line:1 char:1
+ go run main.go
+ ~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (2018/05/09 10:2...0081216) ready.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
2018/05/09 10:23:28 220 192.168.206.226 FTP server (QNXNTO-ftpd 20081216) ready.
2018/05/09 10:23:28 > AUTH TLS
502 RFC 2228 authentication not implemented.
2018/05/09 10:23:28 < 502 RFC 2228 authentication not implemented.
exit status 1
Я что-то не так делаю? Кажется, я не понимаю, в чем проблема.