Example #1
0
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)
Example #2
0
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)
Example #3
0
 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()
Example #4
0
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)
Example #5
0
    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']
Example #6
0
 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)
Example #7
0
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'
Example #8
0
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)
Example #9
0
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)
Example #10
0
 def client(self):
     config = CosConfig(
         Region=__COS_REGION__,
         SecretId=__COS_ID__,
         SecretKey=__COS_KEY__,
     )
     self.cos_client = CosS3Client(config)
Example #11
0
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
Example #12
0
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)
Example #13
0
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)
Example #14
0
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
Example #15
0
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)
Example #16
0
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)
Example #17
0
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='')
Example #18
0
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])
Example #19
0
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,
    )
Example #20
0
File: COS.py Project: zineos/Savior
 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')
Example #21
0
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)
Example #22
0
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
Example #23
0
    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
Example #25
0
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)
Example #26
0
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)
Example #27
0
 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)
Example #28
0
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)
Example #29
0
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'])
Example #30
0
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
    )