Fastdfs创建对象并保存图片的一些记录。转自不知道哪个大佬

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值