MinIO文件存储服务器,python代码上传下载代码

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值