栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950425.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号