From bb08d6425f336097c6f550077338d0982b08be58 Mon Sep 17 00:00:00 2001 From: zeast <410364711@qq.com> Date: Mon, 9 Jan 2017 11:45:58 +0800 Subject: [PATCH] use utf8 default --- ftp.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ftp.go b/ftp.go index 66dcf54..257b40e 100644 --- a/ftp.go +++ b/ftp.go @@ -95,6 +95,12 @@ func DialTimeout(addr string, timeout time.Duration) (*ServerConn, error) { return nil, err } + err = c.setUTF8() + if err != nil { + c.Quit() + return nil, err + } + return c, nil } @@ -165,6 +171,24 @@ func (c *ServerConn) feat() error { return nil } +// setUTF8 issues an "OPTS UTF8 ON" command. +func (c *ServerConn) setUTF8() error { + if _, ok := c.features["UTF8"]; !ok { + return nil + } + + code, message, err := c.cmd(-1, "OPTS UTF8 ON") + if err != nil { + return err + } + + if code != StatusCommandOK { + return errors.New(message) + } + + return nil +} + // epsv issues an "EPSV" command to get a port number for a data connection. func (c *ServerConn) epsv() (port int, err error) { _, line, err := c.cmd(StatusExtendedPassiveMode, "EPSV")