首页 > 编程语言 >python代码上传文件到fastdfs

python代码上传文件到fastdfs

时间:2024-05-15 22:43:49浏览次数:25  
标签:00 python fastdfs FastdfsClient url client group1 上传

Install

直接pip安装,需要Python3.10+

pip install fastdfs-client

Initial client

可以用其他教程的client.conf配置文件的方式,也可以直接传入ip列表进行初始化

from fastdfs_client import FastdfsClient

client = FastdfsClient(trackers=('ip1', 'ip2', ...))

Upload by filename

这个返回的内容跟其他Python SDK相同,只是把返回值里的bytes解码成str

ret = client.upload_by_filename('test.txt')
print(ret)
# {"Group name":"group1","Status":"Upload successed.", "Remote file_id":"group1/M00/00/00/
#	wKjzh0_xaR63RExnAAAaDqbNk5E1398.py","Uploaded size":"6.0KB","Local file name":"test"
#	, "Storage IP":"192.168.243.133"}

Upload as url

其实我只需要这个函数,pypi和github上能搜到的包,基本都是在上一步就报错了,而且它们都需要xxx.conf文件作为传入参数
感觉很没必要,所以干脆自己封装一个更加简单易用的

url = client.upload_as_url(b'...', suffix='jpeg')
print(url)
# http://<ip1>/group1/M00/00/00/xxx.jpeg

Real Example

实例

import sys
from pathlib import Path
from fastdfs_client import FastdfsClient

client = FastdfsClient(
    trackers=("120.77.47.33",),
    ip_mapping={"120.77.47.33": "https://dfs.waketzheng.top"},
)

p = Path("a.jpg")
if sys.argv[1:] and (_p := Path(sys.argv[1])).exists():
    p = _p
ret = client.upload_as_url(p.read_bytes(), p.suffix)  # 本地文件路径
print(ret)
# https://dfs.wakethzheng.top/group1/M00/00/00/eE0vIWZExnaAUx0mAAXiLDPsKR4172.jpg

标签:00,python,fastdfs,FastdfsClient,url,client,group1,上传
From: https://www.cnblogs.com/waketzheng/p/18194844

相关文章

  • Python - pyenv, virtualenv, pipenv
    Pyenv可托管多个不同的Python版本。Installpyenv:gitclonehttps://github.com/pyenv/pyenv.git~/.pyenvAdd~/.pyenv/bintoPATH:if[[$(echo$PATH|grep'pyenv'|wc-l)-eq0]];thenPATH=$PATH:~/.pyenv/binfi 查看当前系统上已经安装和正在使用的......
  • Python - 数据库连接池
    目录SQLite自定义连接池使用sqlalchemy创建连接池SQLite自定义连接池importsqlite3fromqueueimportQueueclassSQLiteConnectionPool:def__init__(self,db_path,max_connection=10):self.db_path=db_path#数据库文件路径self.max_c......
  • 【django学习-28】列表界面模板下载与上传文件
    前言,我们在实际项目开发过程中,经常有列表界面,有上传功能,并且支持先下载模板,后上传1.实现效果与前端展示<formmethod="post"enctype="multipart/form-data"action="/depart/multi/">{%csrf_token%}<divclass="form-group"><inputtyp......
  • 【django学习-27】media介绍与文件上传
    前言:django开发过程中,有2个文件夹(也即:目录)比较特殊:static文件夹(目录)、media文件夹(目录)。static目录:我们项目自己用到的文件(css、js、项目图片、插件),建议放在static目录下。media目录:用户自己上传的文件等资源,建议放在media目录下。要想用media目录,必须先配置启用它。1.me......
  • 【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
    问题描述对于Azure资源进行配置操作,门户上可以正常操作。但是想通过Python代码实现,这样可以批量处理。那么在没有SDK的情况下,是否有快速办法呢? 问题解答当然可以,AzurePortal上操作的所有资源都是通过RESTAPI来实现的,所以只要找到正确的API,就可以通过浏览器中抓取到的请求B......
  • python操作redis
    redis安装:https://github.com/tporadowski/redis/releases/一python操作redis1普通链接pipinstallredisimportredisconn=redis.Redis(host="localhost",port=6379,db=0,password=None)conn.set('name','lqz')con......
  • [HDCTF 2023]YamiYami python中的另一种反序列化--yaml
    今天做了到新颖的题,关于python中的yaml反序列化的题目,直接上题吧。发现第一个链接的参数是?url=XXXX,一眼利用点。嗯?直接出了flag,应该是非预期解。再看看有app.py,那就试试。发现app.*被过滤了,二次编码绕过试试。点击查看代码@app.route('/')defindex():session['pas......
  • Selenium4自动化测试8--控件获取数据--上传、下载、https和切换分页
    系列导航一、Selenium4自动化测试1--Chrome浏览器和chromedriver二、Selenium4自动化测试2--元素定位By.ID,By.CLASS_NAME,By.TAG_NAME三、Selenium4自动化测试3--元素定位By.NAME,By.LINK_TEXT和通过链接部分文本定位,By.PARTIAL_LINK_TEXT,css_selector定位,By.CSS_SELECTOR四、j......
  • Python: SunMoonTimeCalculator
     #encoding:utf-8#版权所有2024©涂聚文有限公司#许可信息查看:#描述:https://github.com/Broham/suncalcPy#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python3.11#Datetime:2024/5/1421:59#User:geovindu#Product......
  • 流畅的python--第四章
    Unicode文本和字节序列字符串是较简单的概念,一个字符串就是一个字符序列。问题在于“字符”是如何定义的。在2021年,“字符”的最佳定义是Unicode字符。因此从Python3的str对象中获取的项是Unicode字符。Unicode标准明确区分字符的标识和具体的字节表述。字符的标识,即码点,是0~1......