123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- # -*- 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'))
|