# -*- coding: utf-8 -*- import os import sys import json import numpy as np from baidubce.services.bos import bos_handler from baidubce.services.bos import storage_class from baidubce.services.bos import canned_acl from baidubce.bce_client_configuration import BceClientConfiguration from baidubce.auth.bce_credentials import BceCredentials import bos_sample_conf #导入BOS相关模块 from baidubce import exception from baidubce.services import bos from baidubce.services.bos import canned_acl from baidubce.services.bos.bos_client import BosClient #设置请求超时时间 #bos_sample_conf.config.connection_timeout_in_mills = TIMEOUT #设置接收缓冲区大小 #bos_sample_conf.config.recv_buf_size(BUF_SIZE) #设置发送缓冲区大小 #bos_sample_conf.config.send_buf_size(BUF_SIZE) #设置连接重试策略 #三次指数退避重试 #bos_sample_conf.config.retry_policy = BackOffRetryPolicy() #不重试 #bos_sample_conf.config.retry_policy = NoRetryPolicy() bos_client = BosClient(bos_sample_conf.config) """ response = bos_client.list_buckets() for bucket in response.buckets: print (bucket.name) """ #根据ListObjects接口来获取图片的key,prefix为前缀 def get_objects(prefix, max_keys=10): objects = bos_client.list_objects('ocrtrips', max_keys=max_keys, prefix=prefix) return objects.contents #上传 def put_bos(object_key, file_name, bucket_name='ctrimgs'): bos_client.put_object_from_file(bucket_name, object_key, file_name) return 'https://ctrimgs.bj.bcebos.com/' + object_key #return bos_client.put_object_from_file(bucket_name, object_key, file_name) #删除 def delete_bos(object_key, bucket_name='ctrimgs'): bos_client.delete_object(bucket_name, object_key) return '' #下载 def get_bos(bucket_name, object_key, file_name): bos_client.get_object_to_file(bucket_name, object_key, file_name) #bos查询 def get_object_lists(buckent_name, prefix, max_keys=10): objects = bos_client.list_objects(buckent_name, max_keys=max_keys, prefix=prefix) return objects.contents #分块上传 文件大于5G def get_multipart(bucket_name, object_key, file_name): upload_id = bos_client.initiate_multipart_upload(bucket_name, object_key).upload_id left_size = os.path.getsize(file_name) #设置分块的开始偏移位置 offset = 0 part_number = 1 part_list = [] while left_size > 0: #设置每块为5MB part_size = 5 * 1024 * 1024 if left_size < part_size: part_size = left_size response = bos_client.upload_part_from_file( bucket_name, object_key, upload_id, part_number, part_size, file_name, offset) left_size -= part_size offset += part_size part_list.append({ "partNumber": part_number, "eTag": response.metadata.etag }) part_number += 1 bos_client.complete_multipart_upload(bucket_name, object_key, upload_id, part_list) ''' print bos_client.get_bucket_location(bucket_name) print bos_client.does_bucket_exist(bucket_name) #put_bos(bucket_name, 'data.jpg', '') response = bos_client.get_object_meta_data(bucket_name, 'data.jpg') print(response) url = bos_client.generate_pre_signed_url(bucket_name, 'data.jpg', -1) print(url) #get_bos(bucket_name, 'hadoop-client.tar', './') ''' #print(put_bos('20210616/16-471802237.jpg', 'image/20210616/16-471802237.jpg'))