Python3与FastDFS交互(py3Fdfs)
现有的FastDFS数据库与python交互, 多是通过下载fdfs-client-py,pip本地安装.
不过该模块只适用于Python2, 且适配FastDFS版本较为古老.
在Python3中, 有相对应的py3fdfs模块
安装
1 | pip install py3Fdfs |
py3fdfs源于fdfs-client,但在使用过程中, 和旧版略有不同.(py3fdfs官网示例有误)
创建client实例对象的时候不能直接传入配置文件的地址字符串,否则报错.
错误代码:TypeError: type object argument after ** must be a mapping, not str
通过模块内get_tracker_conf函数, 获取配置文件后传入.
例:
1 2 3 4 5 | from fdfs_client.client import Fdfs_client, get_tracker_conf tracker_path = get_tracker_conf( '/etc/fdfs/client.conf' ) client = Fdfs_client(tracker_path) ret = client.upload_by_filename( './test' ) print (ret) |
!# 上传成功后返回的字典内, 其中'Remote file_id'键对应的值由旧版模块string类型更改为byte类型.
则, 返回的文件id是byte类型
如果项目中有自定义上传类, 需要解码返回的文件id为字符串,否则服务器报错.
错误代码:a bytes-like object is required, not 'str'
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class FastDFSStorage(Storage): '''自定义上传类''' def _save( self , name, content): '''_save方法''' conf_path = get_tracker_conf( './utils/fdfs/client.conf' ) client = Fdfs_client(conf_path) result = client.upload_by_buffer(content.read()) if result.get( 'Status' ) ! = 'Upload successed.' : raise Exception( '上传文件到FastDFS失败' ) filename = result.get( 'Remote file_id' ) # return filename # return str(filename) return filename.decode() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下