Esempio n. 1
0
    def _init_bucket(self, bucket_name, bucket_zone):
        qingstor = QingStor(self.config)
        bucket = qingstor.Bucket(bucket_name, bucket_zone)

        list_bucket_output = qingstor.list_buckets()

        bucket_names = []
        for bucket_exist in list_bucket_output['buckets']:
            bucket_names.append(bucket_exist['name'])
        if bucket_name not in bucket_names:
            bucket.put()
        return bucket
Esempio n. 2
0
from qingstor.sdk.service.qingstor import QingStor
from qingstor.sdk.config import Config

ACCESS_KEY_ID = 'KPXLUFSRVNVNZGFCEPDT'
SECRET_ACCESS_KEY = '9RW7JW2RsIDmArXSdeHhCjYt7A9vHPs6LBT8zSEp'

config = Config(ACCESS_KEY_ID, SECRET_ACCESS_KEY)
qingstor = QingStor(config)

# List all buckets.
output = qingstor.list_buckets()

# Print HTTP status code.
print(output.status_code)

# Print the buckets.
print(output['buckets'])

bucket = qingstor.Bucket('mrc-lxm', 'pek3b')

fname = 'main1.jpg'

with open('trendsetter/img/{}'.format(fname), 'rb') as f:
    output = bucket.put_object(fname, body=f)

# Print the HTTP status code.
# Example: 201
print(output.status_code)
def add_assets(username, type, music_name):
    # 配置青云服务器
    config = Config(qy_access_key, qy_secret_access_key)
    service = QingStor(config)
    buckets = service.list_buckets('pek3a')['buckets']
    print(buckets)

    # 获取业务用 bucket
    [bucket_info] = filter(lambda bucket: bucket['name'] == 'nest-habit',
                           buckets)
    bucket = service.Bucket('nest-habit', 'pek3a')

    # 随机一个文件名
    if type == 'uploaded_musics':
        base = 'music'
    elif type == 'avatar':
        base = 'image'
    else:
        return json.dumps({'error':
                           'Invalid operation!'}), 400, regular_req_headers
    filename = mimetypes.guess_extension(request.headers.get('x-mime-type'))
    filename = '%s/%s%s' % (base, str(random.randint(1, 1E15)), filename)

    # 上传这个文件
    result = bucket.put_object(filename, body=request.data)

    print(result)

    # 组装 URL
    url = bucket_info['url'] + '/' + filename

    if type == 'uploaded_musics':
        # 更新数据库
        inserted_id = db['_musics'].insert_one({
            'url':
            url,
            'music_name':
            music_name,
            'created_time':
            datetime.datetime.utcnow(),
            'creator':
            username
        }).inserted_id

        result = db['_users'].find_one_and_update(
            {'username': username},
            {'$push': {
                'uploaded_musics': inserted_id
            }},
            return_document=ReturnDocument.AFTER)
    elif type == 'avatar':
        result = db['_users'].find_one_and_update(
            {'username': username}, {'$set': {
                'avatar': url
            }},
            return_document=ReturnDocument.AFTER)
    else:
        return json.dumps({'error':
                           'Invalid operation!'}), 400, regular_req_headers

    if result == None:
        bucket.delete_object(filename)
        return _no_user_named_xxx, 400, regular_req_headers

    # 生成响应
    if type == 'uploaded_musics':
        result = {'_id': inserted_id, 'music_name': music_name, 'url': url}
        return json.dumps(result,
                          default=oid_handler), 200, regular_req_headers

    keys = list(
        filter(lambda key: key not in ['_id', 'password', 'created_time'],
               result.keys()))
    values = list(map(lambda key: result[key], keys))
    return json.dumps(dict(zip(keys, values)),
                      default=oid_handler), 200, regular_req_headers