我正在尝试使用 C 中的 libcurl 上传文件。数据传输失败。以下是日志消息。
如何解决这个问题?
< 250 CWD 命令成功。
EPSV
- 被动连接数据流 < 500 'EPSV':命令不理解
- 禁用 EPSV 使用
PASV
正在尝试 xxxx .. * 没有路由到主机
无法连接到主机
关闭连接 #0
无法连接到服务器
这意味着当 FTP 服务器打开第二个端口供您的客户端连接时,您的客户端 (libcurl) 无法访问它。这很可能是由于沿途某处的防火墙或其他网络设备阻止了您执行请求操作的能力。
其他原因可能是错误配置的 ftp 服务器,但如果它适用于其他用户,那似乎不太可能。
失败的另一个原因可能是您有一个不知道 EPSV 的活动防火墙,因此被它弄糊涂并为您毁了它。通过将CURLOPT_FTP_USE_EPSV 设置为 0 来尝试不使用它。
您可以尝试使用主动方法(这是大多数旧式 FTP 客户端默认执行的操作),这会使客户端要求服务器重新连接到您。您可以使用CURLOPT_FTPPORT在 libcurl 中激活它。(有关如何使用它的详细信息,请参阅文档。)