为什么要用COS对象存储
为了减少项目运行的服务器压力,文件存储会单独找一*立的服务,即文件存储或对象存储
对象存储和文件存储的差别
- 文件存储类似文件夹目录
- 对象存储没有文件夹概念,内部进行了优化
使用方法
- 开通对象存储(以腾讯为例),进入后台
https://console.cloud.tencent.com/cos5
-
创建桶,选择公有读私有写
-
通过python实现上传文件到储存桶
- 找到python sdk 安装
pip install -U cos-python-sdk-v5
- 初始化
# -*- coding=utf-8
# appid 已在配置中移除,请在参数 Bucket 中带上 appid。Bucket 由 BucketName-APPID 组成
# 1. 设置用户配置, 包括 secretId,secretKey 以及 Region
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
<!--import logging-->
<!--logging.basicConfig(level=logging.INFO, stream=sys.stdout)-->
secret_id = 'COS_SECRETID' # 替换为用户的 secretId
secret_key = 'COS_SECRETKEY' # 替换为用户的 secretKey
region = 'ap-shanghai' # 替换为用户的 Region
token = None # 使用临时密钥需要传入 Token,默认为空,可不填
scheme = 'https' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
# 2. 获取客户端对象
client = CosS3Client(config)
# 参照下文的描述。或者参照 Demo 程序,详见 https://github.com/tencentyun/cos-python-sdk-v5/blob/master/qcloud_cos/demo.py
创建桶(可以代替上面网站手动添加)
response = client.create_bucket(
Bucket='examplebucket-1250000000'
)
查询桶
response = client.list_buckets(
)
上传对象
#### 高级上传接口(推荐)
# 根据文件大小自动选择简单上传或分块上传,分块上传具备断点续传功能。
response = client.upload_file(
Bucket='young-1300539838', # 桶的名称
LocalFilePath='local.txt', # 本地文件路径
Key='picture.jpg', # 上传到桶之后的文件名
# 以下可选参数
PartSize=1,
MAXThread=10,
EnableMD5=False
)
print(response['ETag'])
上传文件DEMO
# -*- coding=utf-8
# appid 已在配置中移除,请在参数 Bucket 中带上 appid。Bucket 由 BucketName-APPID 组成
# 1. 设置用户配置, 包括 secretId,secretKey 以及 Region
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
# import logging
# logging.basicConfig(level=logging.INFO, stream=sys.stdout)
secret_id = '用自己的secret_id' # 替换为用户的 secretId
secret_key = '用自己的secret_key' # 替换为用户的 secretKey
region = '用自己桶的region' # 替换为用户的 Region
# token = None # 使用临时密钥需要传入 Token,默认为空,可不填
# scheme = 'https' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)
# 2. 获取客户端对象
client = CosS3Client(config)
# 参照下文的描述。或者参照 Demo 程序,详见 https://github.com/tencentyun/cos-python-sdk-v5/blob/master/qcloud_cos/demo.py
response = client.upload_file(
Bucket='young-1300539838', # 桶的名称
LocalFilePath='add_new_price.py', # 本地文件路径
Key='add_new_price.py', # 上传到桶之后的文件名
# 以下可选参数
PartSize=1,
MAXThread=10,
EnableMD5=False
)
print(response['ETag'])