def create_bucket(bucket, region="ap-nanjing"): """ 创建桶 :param bucket: 桶名称 :param region: 区域 :return: """ secret_id = settings.TENCENT_COS_ID # 替换为用户的 secretId secret_key = settings.TENCENT_COS_KEY # 替换为用户的 secretKey #region = 'ap-nanjing' # 替换为用户的 Region config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key) client = CosS3Client(config) response = client.create_bucket( Bucket=bucket, ACL="public-read" # private / public-read / public-read-write ) # 在创建桶时设置一下允许跨域,这样可以允许前端js直接上传文件到cos对象存储 cors_config = { 'CORSRule': [{ 'AllowedOrigin': '*', 'AllowedMethod': ['GET', 'PUT', 'HEAD', 'POST', 'DELETE'], 'AllowedHeader': "*", 'ExposeHeader': "*", 'MaxAgeSeconds': 500 }] } client.put_bucket_cors(Bucket=bucket, CORSConfiguration=cors_config)
def create_bucket(bucket, region="ap-beijing"): """ 创建桶 :param bucket: 桶名称 :param region: 区域 :return: """ config = CosConfig(Region=region, SecretId=settings.TENCENT_COS_ID, SecretKey=settings.TENCENT_COS_KEY) client = CosS3Client(config) client.create_bucket( Bucket=bucket, ACL="public-read" # private / public-read / public-read-write ) # 设置跨域规则 cors_config = { 'CORSRule': [{ 'AllowedOrigin': '*', 'AllowedMethod': ['GET', 'PUT', 'HEAD', 'POST', 'DELETE'], 'AllowedHeader': '*', 'ExposeHeader': '*', 'MaxAgeSeconds': 500, }] } client.put_bucket_cors(Bucket=bucket, CORSConfiguration=cors_config)
def __init__(self, region, secret_id, secret_key, token=None, scheme=None, logger_name=None): ''' :param region:用户的 Region :param secret_id:用户的 secretId :param secret_key:用户的 secretKey :param token:使用临时密钥需要传入 Token,默认为空,可不填 :param scheme:指定使用 http/https 协议来访问 COS,默认为 https,可不填 ''' config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme) self.client = CosS3Client(config) if logger_name is not None: self.logger = logging.getLogger(logger_name) else: logging.basicConfig(level=logging.INFO, stream=sys.stdout) self.logger = logging.getLogger()
def delete_file_list(bucket, region, key_list): config = CosConfig(Region=region, SecretId=settings.TENCENT_MY_COS_ID, SecretKey=settings.TENCENT_MY_COS_KEY) client = CosS3Client(config) objects = {"Quiet": "true", "Object": key_list} client.delete_objects(Bucket=bucket, Delete=objects)
def size(self, name): if self._check_url(name): return 0 client = CosS3Client(self.config) response = client.head_object(self.bucket, name) return response['Content-Length']
def __init__(self, secret_id, secret_key, region=None, token=''): config = CosConfig( Secret_id=secret_id, Secret_key=secret_key, Region=region or self.region, Token=token) self.client = CosS3Client(config)
def test_put_get_bucket_logging(): """测试bucket的logging服务""" logging_bucket = 'logging-beijing-' + APPID _create_test_bucket(logging_bucket, 'ap-beijing') logging_config = { 'LoggingEnabled': { 'TargetBucket': logging_bucket, 'TargetPrefix': 'test' } } beijing_conf = CosConfig( Region='ap-beijing', Secret_id=SECRET_ID, Secret_key=SECRET_KEY ) logging_client = CosS3Client(beijing_conf) response = logging_client.put_bucket_logging( Bucket=logging_bucket, BucketLoggingStatus=logging_config ) time.sleep(4) response = logging_client.get_bucket_logging( Bucket=logging_bucket ) print (response) assert response['LoggingEnabled']['TargetBucket'] == logging_bucket assert response['LoggingEnabled']['TargetPrefix'] == 'test'
def create_bucket(bucket, region='ap-chengdu'): """ 创建桶 :param bucket: 桶名称 :param region: 桶区域 :return: """ secret_id = settings.TENCENT_SECRET_ID # 替换为用户的 secretId secret_key = settings.TENCENT_SECRET_KEY # 替换为用户的 secretKey region = region # 替换为用户的 Region config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key) client = CosS3Client(config) client.create_bucket( Bucket=bucket, ACL='public-read' # private/public-read/public-read-write ) # 解决跨域问题 cors_config = { 'CORSRule': [{ 'AllowedOrigin': '*', 'AllowedMethod': ['GET', 'PUT', 'HEAD', 'POST', 'DELETE'], 'AllowedHeader': "*", 'ExposeHeader': "*", 'MaxAgeSeconds': 500 }] } client.put_bucket_cors(Bucket=bucket, CORSConfiguration=cors_config)
def delete_file_list(bucket, region, key_list): config = CosConfig(Region=region, Secret_id=settings.TENCENT_COS_ID, Secret_key=settings.TENCENT_COS_KEY) client = CosS3Client(config) objects = {'Quiet': 'true', 'Object': key_list} client.delete_objects(Bucket=bucket, Delete=objects)
def client(self): config = CosConfig( Region=__COS_REGION__, SecretId=__COS_ID__, SecretKey=__COS_KEY__, ) self.cos_client = CosS3Client(config)
def put_qcode_file_to_tencent_cos(qcode_file, shop_code): """ 将小程序码文件上传到腾讯云cos并返回url :param qcode_file: 小程序码文件流 :param shop_code: 商铺编号,用来作为文件名 :return: """ secret_id = TENCENT_COS_SECRETID secret_key = TENCENT_COS_SECRETKEY region = 'ap-nanjing' # 区域 bucket = 'zhihao-1300126182' # 桶名词 token = None # 使用临时密钥需要传入Token,默认为空,可不填 config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象 client = CosS3Client(config) key = 'img/' + shop_code + '.png' # 文件名 try: response = client.put_object(Bucket=bucket, Body=qcode_file, Key=key, ContentType='image/png') except CosServiceError as e: return False, e.get_error_msg() if not response.get("ETag", None): return False, "上传失败" return True, TENCENT_COS_IMG_HOST + key
def create_bucket(bucket, region='ap-chengdu'): """ 创建桶 :param bucket:桶名 :param region:桶所在区域 :return: """ config = CosConfig(Region=region, SecretId=settings.TENCENT_COS_ID, SecretKey=settings.TENCENT_COS_KEY) client = CosS3Client(config) # 创建桶 response = client.create_bucket( Bucket=bucket, ACL="public-read" # private / public-read /public-read-write ) cors_config = { 'CORSRule': [{ 'MaxAgeSeconds': 500, 'AllowedOrigin': [ '*', ], # ["http://www.qq.com","https://www.xxx.com"] 'AllowedMethod': ['GET', 'PUT', 'HEAD', 'POST', 'DELETE'], 'AllowedHeader': [ '*', ], 'ExposeHeader': [ '*', ] }] } # 桶的跨域设置 client.put_bucket_cors(Bucket=bucket, CORSConfiguration=cors_config)
def create_bucket(region, bucket): """ 创建腾讯的数据存储桶 :param region: 区域名 :param bucket: 桶名称 :return: """ region = region # 替换为用户的 Region config = CosConfig(Region=region, SecretId=TENCENT_COS_ID, SecretKey=TENCENT_COS_KEY) client = CosS3Client(config) # 创建桶 client.create_bucket(Bucket=bucket, ACL="public-read") # 添加桶的跨域规则 cors_config = { 'CORSRule': [{ 'AllowedOrigin': '*', 'AllowedMethod': ['GET', 'PUT', 'HEAD', 'POST', 'DELETE'], 'AllowedHeader': "*", 'ExposeHeader': "*", 'MaxAgeSeconds': 500 }] } client.put_bucket_cors(Bucket=bucket, CORSConfiguration=cors_config)
def uploadTencent(src_file, dist_file): try: secret_id = CONFIG['tencent']['secret_id'] secret_key = CONFIG['tencent']['secret_key'] region = CONFIG['tencent']['region'] appid = CONFIG['tencent']['appid'] bucket = CONFIG['tencent']['bucket'] token = '' # 使用临时秘钥需要传入Token,默认为空,可不填 conf = CosConfig(Appid=appid, Region=region, Secret_id=secret_id, Secret_key=secret_key, Token=token) # 获取配置对象 client = CosS3Client(conf) # 字节流 简单上传 with open(src_file, 'rb') as fp: response = client.put_object( Bucket=bucket, Body=fp, Key=dist_file, CacheControl='no-cache', #ContentDisposition='download.txt' ) #下载链接三十天有效 days = 30 down_url = client.get_presigned_download_url(bucket, dist_file, 86400 * days) msg = '上传腾讯成功:' + str(response) + "\r\n" msg = msg + "下载链接(" + str(days) + "天有效):" + down_url log(msg, title='上传腾.讯成功') return True except Exception as e: log('上传腾讯失败:' + str(e), title='上传腾.讯失败') return False
def delete_bucket(bucket, region): config = CosConfig(Region=region, SecretId=settings.TENCENT_SECRET_ID, SecretKey=settings.TENCENT_SECRET_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_objects['IsTruncated'] == 'false': break except CosServiceError as e: pass client.delete_bucket(bucket)
def main(): global secret_id, secret_key, region, bucket config_json = read_file_content("config.txt") config = json.loads(config_json) secret_id = config["secret_id"] secret_key = config["secret_key"] region = config["region"] bucket = config["bucket"] cos_config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key) client = CosS3Client(cos_config) file_name = sys.argv[1] last_slash_index = file_name.rfind('/') key = str(time.time()) if last_slash_index == -1: key = key + file_name else: key = key + file_name[last_slash_index + 1:] uploadPic(key, file_name, client) result = config["blog_prefix"] + "/" + key sys.stdout.write(result)
def delete_file_list(bucket, region, key_list): config = CosConfig(Region=region, SecretId=settings.TENCENT_SECRET_ID, SecretKey=settings.TENCENT_SECRET_KEY) client = CosS3Client(config) objects = {"Quiet": 'true', 'Objects': key_list} client.delete_object(Bucket=bucket, Delete=objects, Key='')
def upload(src): logging.basicConfig(level=logging.INFO, stream=sys.stdout) secret_id = SECRET_ID secret_key = SECRET_KEY region = REGION endpoint = ENDPOINT config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Endpoint=endpoint) # 2. 获取客户端对象 client = CosS3Client(config) #### 文件流简单上传(不支持超过5G的文件,推荐使用下方高级上传接口) # 强烈建议您以二进制模式(binary mode)打开文件,否则可能会导致错误 with open(src, 'rb') as fp: response = client.put_object( Bucket=BUCKET, Body=fp, Key='typora/{}'.format( src.rsplit('/', 1)[-1] ), # 亚马逊的对象存储没有文件夹的概念,不清腾讯云对象存储是不是; / 作为文件名的一部分,通过命名空间实现了类似文件夹的效果 StorageClass='STANDARD', EnableMD5=False) print(response) if response['ETag']: return 'https://zydstore-1258477714.cos.ap-beijing.myqcloud.com/typora/{}'.format( src.rsplit('/', 1)[-1])
def create_bucket(bucket, region='ap-chengdu'): """ 创建桶 :param bucket:桶名称 :param region: 区域 :return: """ config = CosConfig(Region=region, SecretId=settings.TENCENT_SECRET_ID, SecretKey=settings.TENCENT_SECRET_KEY) # 2. 获取客户端对象 client = CosS3Client(config) # 参照下文的描述。或者参照 Demo 程序,详见 https://github.com/tencentyun/cos-python-sdk-v5/blob/master/qcloud_cos/demo.py client.create_bucket( Bucket=bucket, ACL="public-read", # private / public-read /public-read-write ) # 配置跨域设置 cors_config = { 'CORSRule': [{ 'AllowedOrigin': '*', 'AllowedMethod': ['GET', 'PUT', 'HEAD', 'POST', 'DELETE'], 'AllowedHeader': '*', 'ExposeHeader': '*', 'MaxAgeSeconds': 500, }], } client.put_bucket_cors( Bucket=bucket, CORSConfiguration=cors_config, )
def check_file_exist(self, _bucket_name, _object_path): bucket_fullname = _bucket_name + "-" + self.appid # 获取客户端对象 client = CosS3Client(self.config) if not client.object_exists(bucket_fullname, _object_path): raise ObjectNotFoundOnOSS( os.path.join(bucket_fullname, _object_path) + ' not found')
def delete_file(bucket, region, key): config = CosConfig(Region=region, SecretId=settings.TENCENT_MY_COS_ID, SecretKey=settings.TENCENT_MY_COS_KEY) client = CosS3Client(config) client.delete_object(Bucket=bucket, Key=key)
def save_img_to_cos(request_file, uid): fobj = open('/tmp/cos_temp', 'wb') for chrunk in request_file.chunks(): fobj.write(chrunk) fobj.close() secret_id = os.environ['COS_ID'] secret_key = os.environ['COS_KEY'] region = 'ap-chengdu' token = '' scheme = 'http' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填 config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme) # 2. 获取客户端对象 client = CosS3Client(config) #云端存储的文件名由当前时间和用户id组成 filename = str(int(time.time())) + '-' + str(uid) + '.png' with open('/tmp/cos_temp', 'rb') as fb: response = client.put_object(Bucket='panfei-1257264121', Body=fb, Key=filename, StorageClass='STANDARD', ContentType='image/png') return 'https://panfei-1257264121.cos.ap-chengdu.myqcloud.com/' + filename
def exists(self, name): if self._check_url(name): return True client = CosS3Client(self.config) response = client.object_exists(self.bucket, name) return response
def _save(self, name, content): if self._check_url(name): return name client = CosS3Client(self.config) _ = client.put_object(self.bucket, content, name) return name
def cloud_download(local_path, cloud_path): from qcloud_cos import CosConfig from qcloud_cos import CosS3Client import sys import logging #设置用户配置 logging.basicConfig(level=logging.INFO, stream=sys.stdout) secret_id = 'AKIDTzTsGYhBOYceduNNXbfeXL3No494wOwR' secret_key = 'Xv8qNl5JSeqw2660rdEiCYk4LSOEwT5d' region = 'ap-beijing' token = '' config = CosConfig(Secret_id=secret_id, Secret_key=secret_key, Region=region, Token=token) #获取客户端对象 client = CosS3Client(config) #文件下载 response = client.get_object( Bucket='test01-1257045059', Key=cloud_path, ) response['Body'].get_stream_to_file(local_path)
def test_put_get_delete_replication(): """设置、获取、删除跨园区复制配置""" replic_dest_bucket = 'replicationsh-' + APPID _create_test_bucket(replic_dest_bucket, 'ap-shanghai') sh_conf = CosConfig(Region='ap-shanghai', Secret_id=SECRET_ID, Secret_key=SECRET_KEY) sh_client = CosS3Client(sh_conf) response = sh_client.put_bucket_versioning(Bucket=replic_dest_bucket, Status='Enabled') replication_config = { 'Role': 'qcs::cam::uin/2779643970:uin/2779643970', 'Rule': [{ 'ID': '123', 'Status': 'Enabled', 'Prefix': '中文', 'Destination': { 'Bucket': 'qcs::cos:ap-shanghai::' + replic_dest_bucket } }] } # source dest bucket must enable versioning # put replication response = client.put_bucket_replication( Bucket=test_bucket, ReplicationConfiguration=replication_config) # wait for sync # get replication time.sleep(4) response = client.get_bucket_replication(Bucket=test_bucket) assert response # delete replication response = client.delete_bucket_replication(Bucket=test_bucket)
def initial(self): if all( [config.COS_SECRET_ID, config.COS_SECRET_KEY, config.COS_REGION]): cos_config = CosConfig(Region=config.COS_REGION, SecretId=config.COS_SECRET_ID, SecretKey=config.COS_SECRET_KEY) self.client = CosS3Client(cos_config)
def test_select_object(): """测试SQL检索COS对象(只支持国内)""" select_obj = "select_test.json" json_body = {'name': 'cos', 'age': '999'} conf = CosConfig( Region='ap-guangzhou', SecretId=SECRET_ID, SecretKey=SECRET_KEY, ) test_bucket = 'test-select-' + APPID _create_test_bucket(test_bucket, 'ap-guangzhou') client = CosS3Client(conf) response = client.put_object(Bucket=test_bucket, Key=select_obj, Body=(json.dumps(json_body) + '\n') * 100) response = client.select_object_content( Bucket=test_bucket, Key=select_obj, Expression='Select * from COSObject', ExpressionType='SQL', InputSerialization={ 'CompressionType': 'NONE', 'JSON': { 'Type': 'LINES' } }, OutputSerialization={'CSV': { 'RecordDelimiter': '\n' }}) event_stream = response['Payload'] for event in event_stream: print(event)
def ubak(): config = init() # show databases sql = 'mysql -uroot -p' + config['sql_pwd'] + ' ' + '-e "show databases;"' os.system(sql) # local config t = time.strftime("%Y%m%d", time.localtime()) config['database'] = raw_input("chose a database you want to backup:") config['file_name'] = config['database'] + '-' + t + '.sql' config['file_path'] = config['database'] + '.sql' sql = 'mysqldump -uroot -p' + \ config['sql_pwd'] + ' ' + config['database'] + \ ' > ' + config['file_path'] os.system(sql) Tconfig = CosConfig(Region=config['region'], SecretId=config['secret_id'], SecretKey=config['secret_key'], Token=config['token'], Scheme=config['scheme']) client = CosS3Client(Tconfig) response = client.upload_file(Bucket=config['bucket'], LocalFilePath=config['file_path'], Key=config['file_name'], PartSize=10, MAXThread=10, EnableMD5=False) print('\033[1;42;40m Success! \033[0m ') print('File\'s ETag is:') print(response['ETag'])
def creat_bucket(bucket_name, region='ap-beijing'): config = CosConfig(Region=region, SecretId=settings.TX_COS_SECRET_ID, SecretKey=settings.TX_COS_SECRET_KEY) # 2. 获取客户端对象 client = CosS3Client(config) # 创建桶 response = client.create_bucket( Bucket=bucket_name, # 桶的名称 ACL='public-read', # private / public-read / public-read-write ) # 设置桶的跨域规则 cors_config = { 'CORSRule': [ { 'AllowedOrigin': '*', 'AllowedMethod': ['GET', 'PUT', 'HEAD', 'POST', 'DELETE'], 'AllowedHeader': "*", 'ExposeHeader': "*", 'MaxAgeSeconds': 500 } ] } client.put_bucket_cors( Bucket=bucket_name, CORSConfiguration=cors_config )