文章目录
- 1.安装包
- 2.建立连接
- 3.操作存储桶(文件夹)
- 3.1创建桶
- 3.2判断桶存在
- 3.3删除桶
- 4.操作文件对象
- 4.1 下载文件
- 4.1.1 获取文件数据
- 4.1.2 直接下载到本地指定目录:
- 4.2上传文件
- 4.2.1以数据流格式上传
- 4.2.2 以文件路径上传
- 4.3删除文件
- 4.4 删除多个文件
- 5.问题
- 6.解决
1.安装包
pip install minio
官方API文档链接:/read/MinioCookbookZH/
- 1
- 2
2.建立连接
from minio import Minio
minioClient = Minio(
endpoint='', # 文件服务地址
access_key='admin', # 用户名
secret_key='admin', # 密钥
secure=False) # 设为True代表启用HTTPS
- 1
- 2
- 3
- 4
- 5
- 6
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', '')
with open('my-testfile', 'wb') as file_data:
for d in (32*1024):
file_data.write(d)
- 1
- 2
- 3
- 4
- 5
- 6
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;示例:[, ]
5.问题
a.获取文件url最长时间期限只能设置为7天?
- 1
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)
- 1
- 2
- 3
- 4
- 5