擅长:python、mysql、java
<p>很可能是主动模式和被动模式之间的冲突。确保以下任一项为真:</p>
<ol>
<li>服务器支持PASV模式,您的客户端正在设置PASV模式</li>
<li>如果服务器不支持被动模式,则防火墙必须支持主动模式FTP传输。</li>
</ol>
<p>编辑:我查看了这些文档,发现在Python2.1和更高版本中,默认模式是被动模式。你在和哪个服务器说话,你知道它是否支持被动模式吗?</p>
<p>在活动模式(非PASV)下,客户端发送一个端口命令,告诉服务器在该端口上启动数据连接,这要求防火墙知道端口命令,以便它可以将传入的数据连接转发给您--很少有防火墙支持此操作。在被动模式下,客户端打开数据连接,服务器使用它(服务器在打开数据连接时是“被动的”)。</p>
<p>如果你不使用被动模式,做一个<code>ftp.set_pasv(True)</code>,看看这是否有区别。</p>