又谈FTP应用,SOS希望在不改变服务器配置基础上去找办法解决

又谈FTP应用,SOS希望在不改变服务器配置基础上去找办法解决

看过之前的FTP相关应用,试了感觉到都不明不白,
这回我做了一个,发现应用出现一个问题,

[Copy to clipboard] [ - ]
CODE:
#-*-coding=gbk
from ftplib import FTP
import sys,os
DIRN='/download'
bufszie = 1024
ftp=FTP()
ftp.set_debuglevel(2)
ftp.connect('192.168.1.128','port')

ftp.login('iislog','passwd')
print ftp.getwelcome()
ftp.cwd(DIRN)
ftp.set_pasv(True)
filename='D:\\python\\python-3.0.msi'
file_handler = open(filename,'rb')
print filename,"uploading...."
ftp.storbinary('STOR %s' % filename, file_handler, bufszie) #上传文件
ftp.set_debuglevel(0)
file_handler.close()
ftp.quit()

运行结果如下:

[Copy to clipboard] [ - ]
CODE:
*get* '220 Welcome\r\n'
*resp* '220 Welcome'
*cmd* 'USER iislog'
*put* 'USER iislog\r\n'
*get* '331 Please specify the password.\r\n'
*resp* '331 Please specify the password.'
*cmd* 'PASS **************'
*put* 'PASS **************\r\n'
*get* '230 Login successful.\r\n'
*resp* '230 Login successful.'
*welcome* '220 Welcome'
220 Welcome
*cmd* 'CWD /download'
*put* 'CWD /download\r\n'
*get* '250 Directory successfully changed.\r\n'
*resp* '250 Directory successfully changed.'
D:\python\python-3.0.msi uploading....
*cmd* 'TYPE I'
*put* 'TYPE I\r\n'
*get* '200 Switching to Binary mode.\r\n'
*resp* '200 Switching to Binary mode.'
*cmd* 'PASV'
*put* 'PASV\r\n'
*get* '227 Entering Passive Mode (192.168.1.128,138,2)\r\n'
*resp* '227 Entering Passive Mode ('192.168.1.128,138,2)'
Traceback (most recent call last):
  File "C:\Documents and Settings\liuhanhua\桌面\s\python\ftp.py", line 17, in <module>
    ftp.storbinary('STOR %s' % filename, file_handler, bufszie) #上传文件
  File "C:\Python26\lib\ftplib.py", line 448, in storbinary
    conn = self.transfercmd(cmd)
  File "C:\Python26\lib\ftplib.py", line 356, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "C:\Python26\lib\ftplib.py", line 324, in ntransfercmd
    conn = socket.create_connection((host, port), self.timeout)
  File "C:\Python26\lib\socket.py", line 512, in create_connection
    raise error, msg
socket.error: [Errno 10061]

问题还是卡在ftp.storbinary('STOR %s' % filename, file_handler, bufszie)
我登陆的是linux服务器,在不改变服务器配置基础上,   哪位大虾帮助我解决一下这个难题呀, 多谢!!

open(filename,'rb')
open(filename,'rb') 也一样的
socket.error: Errno 10061?这个大部分时候是指定端口上的服务不存在或者是被防火墙拦住了。仿佛storbinary的时候server端端口中途关闭了或者根本没开。

在不改变FTP服务器的情况下有什么办法解决,
用别的FTP客户端工具没有这种问题呀
我们开发此类工具难道都要求服务器适应client端的需要吗

transfercmd建立socket连接失败了。不是客户端防火墙的问题么?
改成 ftp.set_pasv(False) 试一下。
谢谢你了,刚才的问题解决了,  
但是出现另一个问题, 上传的目录我能写入,但是结果还出现下面状况,

*get* '553 Could not create file.\r\n'
*resp* '553 Could not create file.'
ERROR: cannot read filename "D:\python\python-3.0.msi'"
ftp.storbinary('STOR %s' % filename, file_handler, bufszie)
这里的 filename 不能带路径。
split 一下,只留下文件名就可以了。
*get* '200 Switching to Binary mode.\r\n'
*resp* '200 Switching to Binary mode.'
*cmd* 'PORT 192,168,202,7,24,130'
*put* 'PORT 192,168,202,7,24,130\r\n'
*get* '200 PORT command successful. Consider using PASV.\r\
*resp* '200 PORT command successful. Consider using PASV.'
*cmd* 'PETR d.pdf'
*put* 'PETR d.pdf\r\n'
*get* '500 Unknown command.\r\n'
*resp* '500 Unknown command.'
ERROR: cannot read file "d.pdf"