说明
在之前的某篇文章中,介绍了告诉传输文件的办法,在文中,我使用了nginx
来共享文件,缺点在于Windows的文件编码方式为GBK,在传输中文名的文件的时候,会出错,Windows下搭建FTP服务器的方式还有Windows自带的Internet Information Service 管理器
,此法可解决中文问题,但是CPU占用较高,我的电脑上用IIS(Internet Information Service 管理器)搭建的FTP服务器来传松文件的时候,CPU占用超过30%,但是用nginx
CPU占用不到5%。所以,今天换另外一个FTP服务器——pyftpdlib
安装
首先,电脑上得有已经安装好的python环境,然后使用pip命令安装
1 | pip insstall pyftpdlib |
运行
编辑一个纯文本文件,其内容如下
1 | #coding:utf-8 |
其中,E:/UT_Downloads/
是需要共享的文件所在路径,可以自行更改,fan
和root
是用户名和密码,也可以自己改动,而authorizer.add_anonymous("D:/")
是用来控制是否允许匿名用户登录的,若是把改行注释(行首加#号),在登录服务器的时候,就需要输入用户名和密码了
将文件名后缀设置为.py
,在命令行下切换到该文件所在目录,使用python ***.py
就可以打开FTP服务器了
连接展示
nginx
搭建的实际上是http
服务器,没办法文件管理器里面打开,用pyftpdlib
搭建的是可以在文件管理器里面打开的。
存在的问题
- 以上示范代码,可以提供文件的下载,但是还不支持文件上传,若有上传文件的需要,可阅读官方的文档。
我编辑此文的时候,还未与nginx
的性能相比较过。 - Windows下的中文乱码
描述
此问题表现为在浏览器打开FTP服务器是正常的,在文件管理器打开FTP服务器是乱码的。
解决办法
解决方法为更改pyftpdlib
的源代码,到https://github.com/giampaolo/pyftpdlib/下载源代码,更改pyftpdlib
文件夹下的filesystems.py
,第471
行和603
的utf8
改为gbk
,文件handlers.py
的1382
行的utf8
改为gbk
,然后在命令行切换到setup.py
文件所在的目录,使用命令python setup.py install
进行安装。
卸载pyftpdlib
由于之前已经通过命令pip insstall pyftpdlib
安装过了,所以用源代码安装的时候会提示已经安装,可以通过命令
1 | pip uninstall pyftpdlib |
来将之前的pyftpdlib
卸载掉,然后再安装更改源代码后的pyftpdlib