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
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