在python中使用pyftpdlib库作为FTP服务器,可以指定相应目录设置各种读写权限及匿名访问,相当的方便。
代码如下:
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
# 实例化DummyAuthorizer来创建ftp用户
authorizer = DummyAuthorizer()
# 参数:用户名,密码,目录,权限
authorizer.add_user('admin1', '123', 'd:\\ftp', perm='elradfmwMT')
authorizer.add_user('admin2', '123', 'd:\\ftp', perm='elradfmwMT')
# 匿名登录
authorizer.add_anonymous('d:\\ftp\\sharefiles', perm='elradfmwMT')
handler = FTPHandler
handler.authorizer = authorizer
# 参数:IP,端口,handler
server = FTPServer(('192.168.10.41', 21), handler)
server.serve_forever()
'''权限参数
e 读权限,改变文件目录
l 读权限,可以列出所有的文件
r 读权限,可以列出所有的文件
a 写权限,可以上传文件
d 写权限,删除文件
f 写权限,文件重命名
m 写权限,创建文件
w 写权限
M 文件传输的模式
T 更改文件修改时间
'''
但是有一个致命问题:那就是文件名出现乱码。得使用如下方法解决。
找到库安装目录,大体如:Lib\site-packages\pyftpdlib
找到该目录下的filesystems.py和handlers.py这两个文件,将里面的所有utf8替换为gbk,这样,就解决问题了。