zoukankan      html  css  js  c++  java
  • Python3与FastDFS交互(py3Fdfs)

    现有的FastDFS数据库与python交互, 多是通过下载fdfs-client-py,pip本地安装.
    不过该模块只适用于Python2, 且适配FastDFS版本较为古老.

    在Python3中, 有相对应的py3fdfs模块

    安装

    pip install py3Fdfs
    

      

    py3fdfs源于fdfs-client,但在使用过程中, 和旧版略有不同.(py3fdfs官网示例有误)

    创建client实例对象的时候不能直接传入配置文件的地址字符串,否则报错.
    错误代码:TypeError: type object argument after ** must be a mapping, not str

    通过模块内get_tracker_conf函数, 获取配置文件后传入.

    例:

    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'

    例:

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

      

      

      

  • 相关阅读:
    全国疫情数据的爬取
    Spring_声明式事务
    第三周总结
    Spring_整合Mybatis
    Oracle AWR内容详解 参考学习钱若梨花落
    查看Oracle某时刻的客户端IP连接情况 参考学习钱若梨花落
    oracle Logminer 日志挖掘 参考学习钱若离花落
    静默升级oracle 11g (从11.2.0.1升级到11.2.0.4)
    oracle RAC集群启动和关闭
    856. Score of Parentheses
  • 原文地址:https://www.cnblogs.com/jrri/p/11570089.html
Copyright © 2011-2022 走看看