我正在尝试使用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
我做错了吗?似乎无法理解问题所在。
答案 0 :(得分:2)
您的FTP服务器不支持TLS / SSL加密。所以你不能使用它。
删除AuthTLS
来电。