Golang使用github.com/jlaffaye/ftp上传文件遇连接拒绝问题解决
Golang使用github.com/jlaffaye/ftp库上传文件时Stor函数报"connection refused"的解决方法
在使用Golang的github.com/jlaffaye/ftp库传输文件时,遇到以下问题:可以正常连接FTP服务器并切换工作目录,但调用Stor函数上传约700MB的压缩文件时,提示"connection refused"并断开连接。该FTP服务器可通过FileZilla正常连接,文件本身无损坏,曾怀疑是bufio.NewReader的使用问题,但未找到有效参考示例。
相关代码:
ftpFile := "hola.txt" fileOpen, err := os.Open(ftpFile) // 读取文件 if err != nil { fmt.Println("error " + ftpFile) panic(err) } else { fmt.Println("abierto " + ftpFile) } reader := bufio.NewReader(fileOpen) err = client.Stor(ftpDir+ftpFile, reader) if err != nil { fmt.Println("error en stor " + ftpDir + ftpFile) panic(err) } else { fmt.Println("subiendo " + ftpFile) } defer fileOpen.Close()
排查过程:
- 更换CentOS服务器测试,问题依旧,排除本地服务器环境问题
- 按照库文档编写简化上传脚本,仍然失败,甚至向项目GitHub仓库提交了issue
- 在终端执行原生FTP命令的
ls操作时,也出现了相同的PASV模式连接拒绝错误
解决方案:
最终定位到问题根源:防火墙阻止了FTP的PASV模式连接。将本地服务器IP加入FTP服务器的防火墙白名单后,问题彻底解决。
内容的提问来源于stack exchange,提问作者Rush Alvarado
相关产品推荐
相关产品推荐

