1、创建桶
创建客户端
from minio import Minio
# 创建具有匿名访问权限的客户端。
client = Minio("play.min.io")
# 创建具有访问权限和密钥的客户端。
client = Minio("s3.amazonaws.com", "ACCESS-KEY", "SECRET-KEY")
# 创建具有特定区域的访问密钥和密钥的客户端。
client = Minio(
"play.minio.io:9000",
access_key="Q3AM3UQ867SPQQA43P2F",
secret_key="zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG",
region="my-region",
)
# 使用代理服务器创建带有自定义HTTP客户端的客户端。
import urllib3
client = Minio(
"SERVER:PORT",
access_key="ACCESS_KEY",
secret_key="SECRET_KEY",
secure=True,
http_client=urllib3.ProxyManager(
"https://PROXYSERVER:PROXYPORT/",
timeout=urllib3.Timeout.DEFAULT_TIMEOUT,
cert_reqs="CERT_REQUIRED",
retries=urllib3.Retry(
total=5,
backoff_factor=0.2,
status_forcelist=[500, 502, 503, 504],
),
),
)
不存在桶创建桶
found = client.bucket_exists(bucket_name)
if not found:
client.make_bucket(bucket_name)
print('新建桶 {} 成功!'.format(bucket_name))
else:
print("桶 '{}' 存在".format(bucket_name))
2、上传文件到minio桶
client.fput_object()
不能上传文件夹,上传压缩文件和单独的文件,要上传多个,for 循环
for dir in os.listdir(root): #dir
path = root + dir
for img_absolute_path in glob.glob(path+"/*.png"): #
file_path = img_absolute_path # 本地文件图片绝对路径
object_name = img_absolute_path.split("/")[-1] # 图片的名字
# minio 上传的捅地址,多级目录不会自己创建会自己建立
object_name = "date/img/1.png"
#######################################
# 传输文件
client.fput_object(
bucket_name=bucket_name, #"tmp", #桶的名字 桶只有一个没有多级目录的捅,看着的多级目录是object_name 格式
object_name=object_name, #这里是多级目录的结构,例如 "date/img/1.png" ,但是桶不是多级的捅,桶内的多级目录是这里给的
file_path=file_path) #图片本地的绝对路径
print("=========================> 上传成功,查看minio buket",bucket_name, object_name)
3、从minio 下载桶里面的文件
lists = client.list_objects(bucket_name=bucket_name)
for dir in lists:
dir_name = dir.object_name # 通过 对象.object_name才能获取名字 room1/
img_lists = client.list_objects(bucket_name=bucket_name, prefix=dir_name)
for img in img_lists:
img_name = img.object_name # tmp/room1/1.png
client.fput_object(
bucket_name="tmp",
object_name=img_name, # 桶中的路径地址
file_path="/example-data/") #保存的本地 路径地址
参考 https://blog.csdn.net/aa2528877987/article/details/122729456