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());
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 8
0
        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);
        }