from tos.models2 import UploadedPart
ak = os.getenv('TOS_ACCESS_KEY')
sk = os.getenv('TOS_SECRET_KEY')
endpoint = "your endpoint"
bucket_name = "bucket-test"
object_key = "object-test"
src_bucket_name = "your src bucket name"
src_object_key = "your src object key"
client = tos.TosClientV2(ak, sk, endpoint, region)
head_info = client.head_object(src_bucket_name, src_object_key)
total_size = head_info.content_length
part_size = 1024 * 1024 * 5
resp = client.create_multipart_upload(bucket_name, object_key)
upload_id = resp.upload_id
while offset < total_size:
num_to_upload = min(part_size, total_size - offset)
end = offset + num_to_upload - 1
result = client.upload_part_copy(bucket_name, object_key, upload_id, part_number, src_bucket_name,
copy_source_range_start=offset, copy_source_range_end=end)
parts.append(UploadedPart(part_number, result.etag))
resp = client.complete_multipart_upload(bucket_name, object_key, upload_id, parts=parts)
except tos.exceptions.TosClientError as e:
print('fail with client error, message:{}, cause: {}'.format(e.message, e.cause))
except tos.exceptions.TosServerError as e:
print('fail with server error, code: {}'.format(e.code))
print('error with request id: {}'.format(e.request_id))
print('error with message: {}'.format(e.message))
print('error with http code: {}'.format(e.status_code))
print('error with ec: {}'.format(e.ec))
print('error with request url: {}'.format(e.request_url))
print('fail with unknown error: {}'.format(e))