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 對象服務,用於存儲大量的數據庫不好存儲數據,比如圖片,視頻之類。
數據訪問地址可以使用自有域名,或者有對象服務提供域名
