Python - 騰訊雲雲存儲cos簡單使用


獲取cos上傳臨時憑證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-chengdu'     # 替換為用戶的 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)

創建桶

response = client.create_bucket(
    Bucket='examplebucket-1250000000'
)

上傳文件

#### 高級上傳接口(推薦)
response = client.upload_file(
    Bucket='zhoagang-1301531359',
    LocalFilePath='local.txt',  #//代指本地文件路徑
    Key='picture.jpg',     #//上傳到桶之后的文件名
    PartSize=1,
    MAXThread=10,
    EnableMD5=False
)
print(response['ETag'])

python上傳實例代碼

# -*- 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


secret_id = '自己的id'      # 替換為用戶的 secretId
secret_key = '自己的key'      # 替換為用戶的 secretKey
region = 'ap-chengdu'     # 替換為用戶的 Region

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)
# 2. 獲取客戶端對象
client = CosS3Client(config)

#文件上傳
response = client.upload_file(
    Bucket='zhoagang-1301531359',
    LocalFilePath='code.png',  #//代指本地文件路徑
    Key='p1.png',     #//上傳到桶之后的文件名
)
print(response['ETag'])

python創建桶的實例代碼

# 1. 設置用戶配置, 包括 secretId,secretKey 以及 Region
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys


secret_id = '自己的id'      # 替換為用戶的 secretId
secret_key = '自己的key'      # 替換為用戶的 secretKey
region = 'ap-chengdu'     # 替換為用戶的 Region

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)

client = CosS3Client(config)

response = client.create_bucket(
    Bucket='examplebucket-1250000000',
    ACL="public-read",# private 私有讀私有寫 /public-read 公共讀 私有寫   / public-read-write  /公共讀/公共寫
)

python實例刪除桶

from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client

secret_id = '555555'  # 替換為用戶的 secretId
secret_key = '6666666'  # 替換為用戶的 secretKey

region = 'ap-chengdu'  # 替換為用戶的 Region

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)

client = CosS3Client(config)

# client.delete_object(
#     Bucket='wangyang-1251317460',
#     Key='p1.png'
# )


objects = {
    "Quiet": "true",
    "Object": [
        {
            "Key": "day2牛存果.py"
        },
        {
            "Key": "小米CC9e.jpg"
        }
    ]
}

client.delete_objects(
    Bucket='wangyang-1251317460',
    Delete=objects
)

獲取cos上傳臨時憑證及刪除

def credential(bucket, region):
    """ 獲取cos上傳臨時憑證 """

    from sts.sts import Sts

    config = {
        # 臨時密鑰有效時長,單位是秒(30分鍾=1800秒)
        'duration_seconds': 5,
        # 固定密鑰 id
        'secret_id': settings.TENCENT_COS_ID,
        # 固定密鑰 key
        'secret_key': settings.TENCENT_COS_KEY,
        # 換成你的 bucket
        'bucket': bucket,
        # 換成 bucket 所在地區
        'region': region,
        # 這里改成允許的路徑前綴,可以根據自己網站的用戶登錄態判斷允許上傳的具體路徑
        # 例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全風險, 請謹慎評估使用)
        'allow_prefix': '*',
        # 密鑰的權限列表。簡單上傳和分片需要以下的權限,其他權限列表請看 https://cloud.tencent.com/document/product/436/31923
        'allow_actions': [
            # "name/cos:PutObject",
            # 'name/cos:PostObject',
            # 'name/cos:DeleteObject',
            # "name/cos:UploadPart",
            # "name/cos:UploadPartCopy",
            # "name/cos:CompleteMultipartUpload",
            # "name/cos:AbortMultipartUpload",
            "*",
        ],

    }

    sts = Sts(config)
    result_dict = sts.get_credential()
    return  result_dict


def delete_bucket(bucket, region):
    """ 刪除桶 """
    # 刪除桶中所有文件
    # 刪除桶中所有碎片
    # 刪除桶
    config = CosConfig(Region=region, SecretId=settings.TENCENT_COS_ID, SecretKey=settings.TENCENT_COS_KEY)
    client = CosS3Client(config)

    try:
        # 找到文件 & 刪除
        while True:
            part_objects = client.list_objects(bucket)

            # 已經刪除完畢,獲取不到值
            contents = part_objects.get('Contents')
            if not contents:
                break

            # 批量刪除
            objects = {
                "Quiet": "true",
                "Object": [{'Key': item["Key"]} for item in contents]
            }
            client.delete_objects(bucket, objects)

            if part_objects['IsTruncated'] == "false":
                break

        # 找到碎片 & 刪除
        while True:
            part_uploads = client.list_multipart_uploads(bucket)
            uploads = part_uploads.get('Upload')
            if not uploads:
                break
            for item in uploads:
                client.abort_multipart_upload(bucket, item['Key'], item['UploadId'])
            if part_uploads['IsTruncated'] == "false":
                break

        client.delete_bucket(bucket)
    except CosServiceError as e:
        pass


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM