Minio文件服务使用API文档-Python

1.安装包
 pip install minio
 官方API文档链接:https://www.bookstack.cn/read/MinioCookbookZH/24.md
2.建立连接
from minio import Minio
minioClient = Minio(
                    endpoint='minio.xxx.com',           # 文件服务地址
                    access_key='admin',                       # 用户名
                    secret_key='admin',                  # 密钥
                    secure=False)                           # 设为True代表启用HTTPS
3.操作存储桶(文件夹)
3.1创建桶

minioClient.make_bucket(“mybucket”, location=“us-east-1”)
location存储的位置(分区地址),默认是us-east-1(美国东一区)

3.2判断桶存在

minioClient.bucket_exists(“mybucket”)

3.3删除桶

minioClient.remove_bucket(“mybucket”)

4.操作文件对象
4.1 下载文件
4.1.1 获取文件数据
get_object(bucket_name, file_name, request_headers=None)   
示例:
   data = minioClient.get_object('mybucket', '0722.jpg')
   with open('my-testfile', 'wb') as file_data:
   for d in data.stream(32*1024):
       file_data.write(d)       
4.1.2 直接下载到本地指定目录:

minioClient.fget_object(‘mybucket’, ‘myobject’, ‘/tmp/myobject’)

4.2上传文件
4.2.1以数据流格式上传

put_object(bucket_name, file_name, file_data, length, content_type=‘application/octet-stream’, metadata=None)

4.2.2 以文件路径上传

若文件已存在,会直接覆盖
fput_object(bucket_name, object_name, file_path, content_type=‘application/octet-stream’, metadata=None)

4.3删除文件

remove_object(bucket_name, file_name)

4.4 删除多个文件

remove_objects(bucket_name, file_iter) # file_iter为list;示例:[test1.txt, test2.txt]

5.问题
a.获取文件url最长时间期限只能设置为7天?
6.解决
a.通过桶权限设置方法,修改时间期限限制。
    set_bucket_policy(policy)
    示例:更改桶权限 设置公共可下载
      policy = '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["*"]},"Action":["s3:GetBucketLocation","s3:ListBucket"],"Resource":["arn:aws:s3:::%s"]},{"Effect":"Allow","Principal":{"AWS":["*"]},"Action":["s3:GetObject"],"Resource":["arn:aws:s3:::%s/*"]}]}' % (bucket_name, bucket_name)
      minioClient.set_bucket_policy(bucket_name=bucket_name, policy=policy)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章