python2 ftp上传文件报错: ftplib.error_temp: 425 Failed to establish connection.

下面是一段ftp上传代码:

import os
import os.path
import ftplib
from ftplib import FTP

def ftp_win_up(filename): 
    ftp=FTP()

    ftp.set_debuglevel(2)
    ftp.connect('10.44.34.12','21')
    ftp.login('laoding','123456') 

    try:
        ftp.cwd('/demo/test')
    except ftplib.error_perm:
        try:
            ftp.mkd('/demo/test')
            ftp.cwd('/demo/test')
        except ftplib.error_perm:
            print ('U have no authority to make dir')
            return

    bufsize = 1024
    file_handler = open(filename,'rb')
    ftp.storbinary('STOR %s' % os.path.basename(filename),file_handler,bufsize)
    ftp.set_debuglevel(2)
    file_handler.close() 
    ftp.quit() 
    print ("ftp win up OK")

if __name__ == "__main__":
    ftp_win_up('C:\\Users\\Administrator\\Desktop\\team\\lx_music.exe')

报错如下:

ftplib.error_temp: 425 Failed to establish connection.

解决,修改代码如下:

    ftp=FTP()
    ftp.set_pasv(False) 
    #设置pasv是一个布尔值标志,为True表示打开被动模式, 为False表示关闭被动模式。
    #默认情况下,被动模式为打开状态。

    ftp.set_debuglevel(2)
    ftp.connect('10.44.34.12','21')
    ftp.login('laoding','123456')
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;

而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值