if len(partETags) != partCount: raise Exception('copyParts fail due to some parts are not finished yet') # View all parts uploaded recently print('Listing all parts......') resp = obsClient.listParts(bucketName, objectKey, uploadId) if resp.status < 300: for part in resp.body.parts: print('\tPart#' + str(part.partNumber) + ', ETag=' + part.etag) print('\n') else: raise Exception('listParts failed') # Complete to upload multiparts partETags = sorted(partETags.items(), key=lambda d: d[0]) parts = [] for key, value in partETags: parts.append(CompletePart(partNum=key, etag=value)) print('Completing to upload multiparts\n') resp = obsClient.completeMultipartUpload(bucketName, objectKey, uploadId, CompleteMultipartUploadRequest(parts)) if resp.status < 300: print('Succeed to complete multiparts into an object named ' + objectKey + '\n') else: print('errorCode:', resp.errorCode) print('errorMessage:', resp.errorMessage) raise Exception('completeMultipartUpload failed')
# Constructs a obs client instance with your account for accessing OBS obsClient = ObsClient(access_key_id=AK, secret_access_key=SK, server=server) # Create bucket print('Create a new bucket for demo\n') obsClient.createBucket(bucketName) # Step 1: initiate multipart upload print('Step 1: initiate multipart upload \n') resp = obsClient.initiateMultipartUpload(bucketName, objectKey) uploadId = resp.body.uploadId # Step 2: upload a part print('Step 2: upload a part\n') partNum = 1 resp = obsClient.uploadPart(bucketName, objectKey, partNumber=partNum, uploadId=uploadId, content='Hello OBS') etag = dict(resp.header).get('etag') # Step 3: complete multipart upload print('Step 3: complete multipart upload\n') resp = obsClient.completeMultipartUpload( bucketName, objectKey, uploadId, CompleteMultipartUploadRequest([CompletePart(partNum=partNum, etag=etag)])) if resp.status < 300: print('Complete finished\n')