騰訊oss對象存儲服務


from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import requests


class TencentOSS:
    def __init__(self):
        self.temp_url = 'https://lqn-1259364486.cos.ap-beijing.myqcloud.com/'
        self.init_client()

    def init_client(self):
        secret_id = '*******'  # 替換為用戶的 secretId
        secret_key = '*********'  # 替換為用戶的 secretKey
        region = '*****'  # 對象存儲的位置信息
        endpoint = ''  # 自由域名修改 如果需要修改自由域名 參數指定 Endpoint=endpoint
        config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)
        # 2. 獲取客戶端對象
        self.client = CosS3Client(config)

    def check_file(self, oss_file_path):
        """校驗單個文件名稱是否已經存在桶中"""
        response = self.client.list_objects(
            Bucket='*****',
            Prefix=oss_file_path
        )
        content = response.get('Contents')
        if content:
            return True
        else:
            return False

    def upload_file_locality(self, file_pth, file_name):
        """
        本地文件上傳
        file_pth: 本地文件的路徑
        file_name: 文件的名稱
        """
        oss_file_name = f'images/{file_name}'
        result = self.check_file(oss_file_name)
        if result:
            print('文件已經存在桶中')
        else:
            with open(file_pth, 'rb') as fp:
                 self.client.put_object(
                    Bucket='********',  # oss 桶的名稱
                    Body=fp,
                    Key=oss_file_name,  # 此處是上傳到oss 的路徑,上傳到這個桶的images 文件夾下
                    StorageClass='image/jpeg',  # 上傳數據類行
                    EnableMD5=False  # 是否使用md5加密
                )

            file_url = self.temp_url+oss_file_name
            return file_url

    def upload_file_url(self, file_url, file_name):
        """
        url 鏈接上傳
        file_url : 文件的url地址
        file_name : 文件的名稱
        """
        oss_file_name = f'images/{file_name}'
        result = self.check_file(oss_file_name)
        if result:
            print('文件已經存在桶中')
        else:
            file_resp = requests.get(file_url)
            self.client.put_object(
                Bucket='l********',  # oss 桶的名稱
                Body=file_resp.content,
                Key=oss_file_name,  # 此處是上傳到oss 的路徑,上傳到這個桶的images 文件夾下
                StorageClass='image/jpeg',  # 上傳數據類行
                EnableMD5=False  # 是否使用md5加密
            )
            file_url = self.temp_url + oss_file_name  # 可以訪問的url
            return file_url

    def upload_big_file(self, file_path, file_name):
        """大文件上傳-----比如視頻啥的"""
        oss_file_name = f'images/{file_name}'
        result = self.check_file(oss_file_name)
        if result:
            print('文件已經存在桶中')
        else:
            self.client.upload_file(
                Bucket='********',
                LocalFilePath=file_path,
                Key=oss_file_name,
                PartSize=1,
                MAXThread=10,
                EnableMD5=False
            )
            file_url = self.temp_url + oss_file_name  # 可以訪問的url
            return file_url


if __name__ == '__main__':
    file_path = '1.jpg'  # 本地文件路徑
    file_name = '3.jpg'  # 文件名稱
    file_url = 'https://lqn-1259364486.cos.ap-beijing.myqcloud.com/images/1.jpg'  # 文件的鏈接地址
    TencentOSS().upload_big_file(file_path, file_name)

騰訊oss 對象服務,用於存儲大量的數據庫不好存儲數據,比如圖片,視頻之類。

數據訪問地址可以使用自有域名,或者有對象服務提供域名


免責聲明!

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



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