private static void AbortMultipartUploadOfBucket(string bucketName) { var multipartUploads = new Dictionary<string, string>(); MultipartUploadListing result = null; string nextKeyMarker = string.Empty; string nextUploadIdMarker = string.Empty; do { var listUploadRequest = new ListMultipartUploadsRequest(bucketName) { KeyMarker = nextKeyMarker, UploadIdMarker = nextUploadIdMarker, MaxUploads = 100 }; result = client.ListMultipartUploads(listUploadRequest); foreach (var upload in result.MultipartUploads) { multipartUploads[upload.UploadId] = upload.Key; } nextKeyMarker = result.NextKeyMarker; nextUploadIdMarker = result.NextUploadIdMarker; foreach (var uploadId in multipartUploads.Keys) { client.AbortMultipartUpload(new AbortMultipartUploadRequest(bucketName, multipartUploads[uploadId], uploadId)); } multipartUploads.Clear(); } while (result.IsTruncated); }
/// <summary> /// 列出所有执行中的Multipart Upload事件 /// </summary> /// <param name="bucketName">目标bucket名称</param> public static void ListMultipartUploads(String bucketName) { var listMultipartUploadsRequest = new ListMultipartUploadsRequest(bucketName); var result = _ossClient.ListMultipartUploads(listMultipartUploadsRequest); Console.WriteLine("Bucket name:" + result.BucketName); Console.WriteLine("Key marker:" + result.KeyMarker); Console.WriteLine("Delimiter:" + result.Delimiter); Console.WriteLine("Prefix:" + result.Prefix); Console.WriteLine("UploadIdMarker:" + result.UploadIdMarker); foreach (var part in result.MultipartUploads) { Console.WriteLine(part.ToString()); } }
public void MultipartUploadComplexStepTest() { var sourceFile = Config.MultiUploadSampleFile; //get target object name var targetObjectKey = OssTestUtils.GetObjectKey(_className); var initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); var initResult = _ossClient.InitiateMultipartUpload(initRequest); // 设置每块为 1M const int partSize = 1024 * 1024 * 1; var partFile = new FileInfo(sourceFile); // 计算分块数目 var partCount = OssTestUtils.CalculatePartCount(partFile.Length, partSize); LogUtility.LogMessage("File {0} is splitted to {1} parts for multipart upload", sourceFile, partCount); // 新建一个List保存每个分块上传后的ETag和PartNumber var partETags = new List <PartETag>(); //upload the file using (var fs = new FileStream(partFile.FullName, FileMode.Open)) { for (var i = 0; i < partCount; i++) { // 跳到每个分块的开头 long skipBytes = partSize * i; fs.Position = skipBytes; // 计算每个分块的大小 var size = partSize < partFile.Length - skipBytes ? partSize : partFile.Length - skipBytes; // 创建UploadPartRequest,上传分块 var uploadPartRequest = new UploadPartRequest(_bucketName, targetObjectKey, initResult.UploadId) { InputStream = fs, PartSize = size, PartNumber = (i + 1) }; var uploadPartResult = _ossClient.UploadPart(uploadPartRequest); // 将返回的PartETag保存到List中。 partETags.Add(uploadPartResult.PartETag); } } var lmuRequest = new ListMultipartUploadsRequest(_bucketName); var lmuListing = _ossClient.ListMultipartUploads(lmuRequest); var mpUpload = lmuListing.MultipartUploads.Single(t => t.UploadId == initResult.UploadId); Assert.IsNotNull(mpUpload, "The multipart uploading should be in progress"); var completeRequest = new CompleteMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId); foreach (var partETag in partETags) { completeRequest.PartETags.Add(partETag); } _ossClient.CompleteMultipartUpload(completeRequest); Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, targetObjectKey)); //delete the object _ossClient.DeleteObject(_bucketName, targetObjectKey); }
public void MultipartUploadPartCopyComplexStepTest() { //get target object name var targetObjectKey = OssTestUtils.GetObjectKey(_className); var initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); var initResult = _ossClient.InitiateMultipartUpload(initRequest); // 设置每块为 512K const int partSize = 1024 * 512 * 1; var sourceObjectMeta = _ossClient.GetObjectMetadata(_bucketName, _sourceObjectKey); // 计算分块数目 var partCount = OssTestUtils.CalculatePartCount(sourceObjectMeta.ContentLength, partSize); LogUtility.LogMessage("Object {0} is splitted to {1} parts for multipart upload part copy", _sourceObjectKey, partCount); // 新建一个List保存每个分块上传后的ETag和PartNumber var partETags = new List <PartETag>(); for (var i = 0; i < partCount; i++) { // 跳到每个分块的开头 long skipBytes = partSize * i; // 计算每个分块的大小 var size = partSize < sourceObjectMeta.ContentLength - skipBytes ? partSize : sourceObjectMeta.ContentLength - skipBytes; // 创建UploadPartRequest,上传分块 var uploadPartCopyRequest = new UploadPartCopyRequest(_bucketName, targetObjectKey, _bucketName, _sourceObjectKey, initResult.UploadId) { BeginIndex = skipBytes, PartSize = size, PartNumber = (i + 1), ModifiedSinceConstraint = DateTime.Now.AddDays(-1) }; uploadPartCopyRequest.MatchingETagConstraints.Add(_objectETag); var uploadPartCopyResult = _ossClient.UploadPartCopy(uploadPartCopyRequest); // 将返回的PartETag保存到List中。 partETags.Add(uploadPartCopyResult.PartETag); } var lmuRequest = new ListMultipartUploadsRequest(_bucketName); var lmuListing = _ossClient.ListMultipartUploads(lmuRequest); var mpUpload = lmuListing.MultipartUploads.Single(t => t.UploadId == initResult.UploadId); Assert.IsNotNull(mpUpload, "The multipart uploading should be in progress"); var completeRequest = new CompleteMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId); foreach (var partETag in partETags) { completeRequest.PartETags.Add(partETag); } _ossClient.CompleteMultipartUpload(completeRequest); Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, targetObjectKey)); //delete the object _ossClient.DeleteObject(_bucketName, targetObjectKey); }
/// <summary> /// List multipart uploads. /// </summary> /// <param name="request">Parameters in a request for listing multipart uploads</param> /// /// <returns> Response to a request for listing multipart uploads</returns> public ListMultipartUploadsResponse ListMultipartUploads(ListMultipartUploadsRequest request) { return(this.DoRequest <ListMultipartUploadsRequest, ListMultipartUploadsResponse>(request)); }
public void MultipartUploadComplexStepTest() { var sourceFile = Config.MultiUploadTestFile; //get target object name var targetObjectKey = OssTestUtils.GetObjectKey(_className); var initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); var initResult = _ossClient.InitiateMultipartUpload(initRequest); // Set the part size const int partSize = 1024 * 1024 * 1; var partFile = new FileInfo(sourceFile); // Calculate the part count var partCount = OssTestUtils.CalculatePartCount(partFile.Length, partSize); LogUtility.LogMessage("File {0} is splitted to {1} parts for multipart upload", sourceFile, partCount); // Create a list to save result var partETags = new List <PartETag>(); //upload the file using (var fs = new FileStream(partFile.FullName, FileMode.Open)) { for (var i = 0; i < partCount; i++) { // Skip to the start position long skipBytes = partSize * i; fs.Position = skipBytes; // calculate the part size var size = partSize < partFile.Length - skipBytes ? partSize : partFile.Length - skipBytes; // Create a UploadPartRequest, uploading parts var uploadPartRequest = new UploadPartRequest(_bucketName, targetObjectKey, initResult.UploadId) { InputStream = fs, PartSize = size, PartNumber = (i + 1) }; var uploadPartResult = _ossClient.UploadPart(uploadPartRequest); // Save the result partETags.Add(uploadPartResult.PartETag); } } var lmuRequest = new ListMultipartUploadsRequest(_bucketName); var lmuListing = _ossClient.ListMultipartUploads(lmuRequest); string mpUpload = null; foreach (var t in lmuListing.MultipartUploads) { if (t.UploadId == initResult.UploadId) { mpUpload = t.UploadId; } } Assert.IsNotNull(mpUpload, "The multipart uploading should be in progress"); var completeRequest = new CompleteMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId); foreach (var partETag in partETags) { completeRequest.PartETags.Add(partETag); } _ossClient.CompleteMultipartUpload(completeRequest); Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, targetObjectKey)); //delete the object _ossClient.DeleteObject(_bucketName, targetObjectKey); }
public void MultipartUploadPartCopyComplexStepTest() { //get target object name var targetObjectKey = OssTestUtils.GetObjectKey(_className); var initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); var initResult = _ossClient.InitiateMultipartUpload(initRequest); // Set the part size const int partSize = 1024 * 512 * 1; var sourceObjectMeta = _ossClient.GetObjectMetadata(_bucketName, _sourceObjectKey); // Calculate the part count var partCount = OssTestUtils.CalculatePartCount(sourceObjectMeta.ContentLength, partSize); LogUtility.LogMessage("Object {0} is splitted to {1} parts for multipart upload part copy", _sourceObjectKey, partCount); // Create a list to save result var partETags = new List <PartETag>(); for (var i = 0; i < partCount; i++) { // Skip to the start position long skipBytes = partSize * i; // calculate the part size var size = partSize < sourceObjectMeta.ContentLength - skipBytes ? partSize : sourceObjectMeta.ContentLength - skipBytes; // Create a UploadPartRequest, uploading parts var uploadPartCopyRequest = new UploadPartCopyRequest(_bucketName, targetObjectKey, _bucketName, _sourceObjectKey, initResult.UploadId) { BeginIndex = skipBytes, PartSize = size, PartNumber = (i + 1), ModifiedSinceConstraint = DateTime.Now.AddDays(-1) }; uploadPartCopyRequest.MatchingETagConstraints.Add(_objectETag); var uploadPartCopyResult = _ossClient.UploadPartCopy(uploadPartCopyRequest); // Save the result partETags.Add(uploadPartCopyResult.PartETag); } var lmuRequest = new ListMultipartUploadsRequest(_bucketName); var lmuListing = _ossClient.ListMultipartUploads(lmuRequest); string mpUpload = null; foreach (var t in lmuListing.MultipartUploads) { if (t.UploadId == initResult.UploadId) { mpUpload = t.UploadId; break; } } Assert.IsNotNull(mpUpload, "The multipart uploading should be in progress"); var completeRequest = new CompleteMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId); foreach (var partETag in partETags) { completeRequest.PartETags.Add(partETag); } _ossClient.CompleteMultipartUpload(completeRequest); Assert.IsTrue(OssTestUtils.ObjectExists(_ossClient, _bucketName, targetObjectKey)); //delete the object _ossClient.DeleteObject(_bucketName, targetObjectKey); }
public void MultipartUploadListMultipartUploadsTest() { //get target object name var targetObjectKey = OssTestUtils.GetObjectKey(_className); var initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); var initResult = _ossClient.InitiateMultipartUpload(initRequest); //get target object name targetObjectKey = OssTestUtils.GetObjectKey(_className); initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); initResult = _ossClient.InitiateMultipartUpload(initRequest); //get target object name targetObjectKey = OssTestUtils.GetObjectKey(_className); initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); initResult = _ossClient.InitiateMultipartUpload(initRequest); var targetObjectKey_3th = targetObjectKey; //get target object name targetObjectKey = OssTestUtils.GetObjectKey(_className); initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); initResult = _ossClient.InitiateMultipartUpload(initRequest); var minUploadId = initResult.UploadId; var lmuRequest = new ListMultipartUploadsRequest(_bucketName); //list 1 lmuRequest.Prefix = targetObjectKey; var lmuListing = _ossClient.ListMultipartUploads(lmuRequest); var uploadSumm = OssTestUtils.ToArray <MultipartUpload>(lmuListing.MultipartUploads); Assert.AreEqual(1, uploadSumm.Count); //list 4 lmuRequest.Prefix = _className; lmuListing = _ossClient.ListMultipartUploads(lmuRequest); uploadSumm = OssTestUtils.ToArray <MultipartUpload>(lmuListing.MultipartUploads); Assert.AreEqual(4, uploadSumm.Count); //list max 2 lmuRequest.Prefix = _className; lmuRequest.MaxUploads = 2; lmuListing = _ossClient.ListMultipartUploads(lmuRequest); uploadSumm = OssTestUtils.ToArray <MultipartUpload>(lmuListing.MultipartUploads); Assert.AreEqual(2, uploadSumm.Count); //list max 10, key-marker is the 3th object lmuRequest.Prefix = _className; lmuRequest.MaxUploads = 10; lmuRequest.KeyMarker = targetObjectKey_3th; lmuListing = _ossClient.ListMultipartUploads(lmuRequest); uploadSumm = OssTestUtils.ToArray <MultipartUpload>(lmuListing.MultipartUploads); Assert.AreEqual(1, uploadSumm.Count); foreach (var item in lmuListing.MultipartUploads) { Assert.AreEqual(targetObjectKey, item.Key); } //get target object name initRequest = new InitiateMultipartUploadRequest(_bucketName, targetObjectKey); initResult = _ossClient.InitiateMultipartUpload(initRequest); if (minUploadId.CompareTo(initResult.UploadId) > 0) { minUploadId = initResult.UploadId; } //list max 10, set UploadIdMarker lmuRequest.Prefix = _className; lmuRequest.MaxUploads = 10; lmuRequest.Delimiter = ""; lmuRequest.KeyMarker = targetObjectKey_3th; lmuRequest.UploadIdMarker = ""; lmuListing = _ossClient.ListMultipartUploads(lmuRequest); uploadSumm = OssTestUtils.ToArray <MultipartUpload>(lmuListing.MultipartUploads); Assert.AreEqual(2, uploadSumm.Count); //list max 10, set UploadIdMarker lmuRequest.Prefix = _className; lmuRequest.MaxUploads = 10; lmuRequest.Delimiter = ""; lmuRequest.KeyMarker = targetObjectKey; lmuRequest.UploadIdMarker = minUploadId; lmuListing = _ossClient.ListMultipartUploads(lmuRequest); uploadSumm = OssTestUtils.ToArray <MultipartUpload>(lmuListing.MultipartUploads); Assert.AreEqual(1, uploadSumm.Count); }