当前位置:网站首页>pyftpdlib中文乱码问题解决方案
pyftpdlib中文乱码问题解决方案
2022-04-22 06:09:00 【刀刀777999】
python实现简易的FTP服务器
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
# 实例化虚拟用户,这是FTP验证首要条件
authorizer = DummyAuthorizer()
path = r'D:\下载'
# 添加用户权限和路径,括号内的参数是(用户名, 密码, 用户目录, 权限)
authorizer.add_user('user', '12345', path, perm='elradfmw')
# 添加匿名用户 只需要路径
authorizer.add_anonymous(path)
# 初始化ftp句柄
handler = FTPHandler
handler.encoding = 'gbk'
handler.authorizer = authorizer
# 监听ip 和 端口,因为linux里非root用户无法使用21端口,所以我使用了2121端口
server = FTPServer(('127.0.0.1', 2121), handler)
# 开始服务
server.serve_forever()
通常,由于编码格式的问题,客户端访问时会出现中文乱码问题
解决
一、filesystem.py
在类 AbstractedFS 中:
增加属性:encoding
@property
def encoding(self):
return self.__encoding
@encoding.setter
def encoding(self,value):
self.__encoding=value
#复制代码
#修改__init__:
def __init__(self, root, cmd_channel,encoding):
#...
#...
self.__encoding=encoding
#并且将本文件中所有'utf8'替换为:self.encoding
二、修改handler
在类 FTPHandler 中:
同样增加属性encoding
复制代码
@property
def encoding(self):
return self.__encodingg
@encoding.setter
def encoding(self,value):
self.__encoding=value
self.fs.encoding=value
#复制代码
#在__init__中增加:
self.__encoding='utf8'
#在方法中 def handle_auth_success(。。。)修改一下(因为改了AbstractFS构造函数):
self.fs = self.abstracted_fs(home, self,self.encoding)
转载(https://www.cnblogs.com/xhzxlqt/p/13658481.html)
不想修改也可直接下载替换
版权声明
本文为[刀刀777999]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44192799/article/details/121215212
边栏推荐
- USBCAN卡在动力电池组EOL测试系统中CAN总线的应用
- Ma8608 Qiyan USB 2.0 High Speed 4-port USB hub controller chip scheme
- QT basic knowledge summary (continuous refresh)
- First order digital low-pass filter - C language / Matlab implementation
- Dcoker installation
- Qinheng ch573 development board
- SQL题目练习总结
- Tencent cloud Internet of things - gateway device experience
- 旋转选择器 WheelPicker 的使用
- 模拟ic设计和数字ic设计的区别,含薪资表
猜你喜欢

51单片机:D/A数模转换实验

STM32 timer generates event Tim_ GenerateEvent

STM32学习记录0005——JLINK下载与调试

Design of second-order RC low-pass filter for PWM wave to DC

STM32 learning record 0005 - JLINK download and debugging

pyautocad 选择对象报错的解决方案

STM32 learning record 0004 - ISP serial port download

模拟电路板调试前的准备工作_电路板的模拟检测

模拟ic设计和数字ic设计的区别,含薪资表

Quantify PM2 in 5 cities 5 changes over time
随机推荐
QT basic knowledge summary (continuous refresh)
老程序员常逛的网站(持续更新)
STM32 learning record - development environment installation
CS5213新版规格书|CS5213新版说明书|HDMI转VGA带音频信号输出方案设计
Dcoker installation
Ma8608 Qiyan USB 2.0 High Speed 4-port USB hub controller chip scheme
USBCAN卡在动力电池组EOL测试系统中CAN总线的应用
阿里云部署Tiny Tiny RSS踩坑笔记
Solution of overdetermined equation
转行数字IC验证的学习路线是什么样的?现在开始转是否来得及?985本硕,电子学院研二
HDMI2. Design circuit comparison between asw3642 and ts3dv642
STM32 timer synchronization trigger code experimental verification and sharing
C技能树测评——0415体验日记
STM32 learning record 0002-stm32
微信支付 iframe子页面 无响应
Experiment 4 cycle program design
[review of Blue Bridge Cup] Naruto's shadow split
Bsgs learning notes
在消防联网(楼宇、工厂、海上风电、管廊等)中CAN光纤转换器、CAN总线光端机典型应用案例
Stm32wb55 RTT based ble sample making process