Exemplo n.º 1
0
        /**
         * 获取已经上传的分块列表
         * **/
        private static bool listMultipartUploads(string bucket, string objKey, string uploadId)
        {
            ListMultipartUploadsRequest request = new ListMultipartUploadsRequest(bucket, objKey, uploadId);
            ListMultipartUploadsResult  result  = ks3Client.getListMultipartUploads(request);

            return(true);
        }
        internal GetMultipartUploadsListResponse(HttpStatusCode statusCode, string responseContent)
            : base(statusCode, responseContent)
        {
            ListMultipartUploadsResult uploadsResult = null;

            using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseContent)))
            {
                uploadsResult = (ListMultipartUploadsResult) new XmlSerializer(typeof(ListMultipartUploadsResult)).Deserialize(stream);
            }
            XDocument root      = XDocument.Parse(responseContent);
            var       itemCheck = root.Root.Descendants("{http://s3.amazonaws.com/doc/2006-03-01/}Upload").FirstOrDefault();

            if (uploadsResult == null || itemCheck == null || !itemCheck.HasElements)
            {
                return;
            }
            var uploads = from c in root.Root.Descendants("{http://s3.amazonaws.com/doc/2006-03-01/}Upload")
                          select new Upload
            {
                Key       = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}Key").Value,
                UploadId  = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}UploadId").Value,
                Initiated = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}Initiated").Value
            };

            this.UploadResult = new Tuple <ListMultipartUploadsResult, List <Upload> >(uploadsResult, uploads.ToList());
        }
Exemplo n.º 3
0
 public void TestlistMultipartUploads()
 {
     if (!init())
     {
         ListMultipartUploadsRequest request = new ListMultipartUploadsRequest(bucketName, objKeyNameFileData, "uploadid");
         ListMultipartUploadsResult  result  = ks3Client.getListMultipartUploads(request);
         Assert.IsNotNull(result);
     }
 }
Exemplo n.º 4
0
        private Tuple <ListMultipartUploadsResult, List <Upload> > GetMultipartUploadsList(string bucketName,
                                                                                           string prefix,
                                                                                           string keyMarker,
                                                                                           string uploadIdMarker,
                                                                                           string delimiter)
        {
            var queries = new List <string>();

            queries.Add("uploads");
            if (prefix != null)
            {
                queries.Add("prefix=" + Uri.EscapeDataString(prefix));
            }
            if (keyMarker != null)
            {
                queries.Add("key-marker=" + Uri.EscapeDataString(keyMarker));
            }
            if (uploadIdMarker != null)
            {
                queries.Add("upload-id-marker=" + uploadIdMarker);
            }
            if (delimiter != null)
            {
                queries.Add("delimiter=" + delimiter);
            }

            queries.Add("max-uploads=1000");

            string query = string.Join("&", queries);
            string path  = bucketName;

            path += "?" + query;

            var request  = new RestRequest(path, Method.GET);
            var response = client.Execute(request);

            if (response.StatusCode == HttpStatusCode.OK)
            {
                var contentBytes = System.Text.Encoding.UTF8.GetBytes(response.Content);
                var stream       = new MemoryStream(contentBytes);
                ListMultipartUploadsResult listBucketResult = (ListMultipartUploadsResult)(new XmlSerializer(typeof(ListMultipartUploadsResult)).Deserialize(stream));

                XDocument root = XDocument.Parse(response.Content);

                var uploads = (from c in root.Root.Descendants("{http://s3.amazonaws.com/doc/2006-03-01/}Upload")
                               select new Upload()
                {
                    Key = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}Key").Value,
                    UploadId = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}UploadId").Value,
                    Initiated = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}Initiated").Value
                });

                return(new Tuple <ListMultipartUploadsResult, List <Upload> >(listBucketResult, uploads.ToList()));
            }
            throw ParseError(response);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Get list of multi-part uploads matching particular uploadIdMarker
        /// </summary>
        /// <param name="bucketName">bucketName</param>
        /// <param name="prefix">prefix</param>
        /// <param name="keyMarker"></param>
        /// <param name="uploadIdMarker"></param>
        /// <param name="delimiter"></param>
        /// <param name="cancellationToken">Optional cancellation token to cancel the operation</param>
        /// <returns></returns>
        private async Task <Tuple <ListMultipartUploadsResult, List <Upload> > > GetMultipartUploadsListAsync(string bucketName,
                                                                                                              string prefix,
                                                                                                              string keyMarker,
                                                                                                              string uploadIdMarker,
                                                                                                              string delimiter,
                                                                                                              CancellationToken cancellationToken)
        {
            var queries = new List <string>();

            queries.Add("uploads");
            if (prefix != null)
            {
                queries.Add("prefix=" + Uri.EscapeDataString(prefix));
            }
            if (keyMarker != null)
            {
                queries.Add("key-marker=" + Uri.EscapeDataString(keyMarker));
            }
            if (uploadIdMarker != null)
            {
                queries.Add("upload-id-marker=" + uploadIdMarker);
            }
            if (delimiter != null)
            {
                queries.Add("delimiter=" + delimiter);
            }

            queries.Add("max-uploads=1000");

            string query = string.Join("&", queries);

            var request = await this.CreateRequest(Method.GET, bucketName,
                                                   resourcePath : "?" + query);

            var response = await this.ExecuteTaskAsync(this.NoErrorHandlers, request, cancellationToken);

            var contentBytes = System.Text.Encoding.UTF8.GetBytes(response.Content);
            ListMultipartUploadsResult listBucketResult = null;

            using (var stream = new MemoryStream(contentBytes))
                listBucketResult = (ListMultipartUploadsResult)(new XmlSerializer(typeof(ListMultipartUploadsResult)).Deserialize(stream));

            XDocument root = XDocument.Parse(response.Content);

            var uploads = (from c in root.Root.Descendants("{http://s3.amazonaws.com/doc/2006-03-01/}Upload")
                           select new Upload()
            {
                Key = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}Key").Value,
                UploadId = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}UploadId").Value,
                Initiated = c.Element("{http://s3.amazonaws.com/doc/2006-03-01/}Initiated").Value
            });

            return(new Tuple <ListMultipartUploadsResult, List <Upload> >(listBucketResult, uploads.ToList()));
        }
Exemplo n.º 6
0
        static async void MultipartUploadInitiate()
        {
            try
            {
                OssClient temp   = new OssClient("bm9crcnr0rtnuw8bnrfvq7w8", "RbtJoExTnA8vYLynUfDh7Ior+oM=");
                string    result = await temp.MultipartUploadInitiate("devdoc", "c# 5.0.pdf");

                FileStream fs = new FileStream(@"c# 5.0.pdf", FileMode.Open);

                byte[] buffer = new byte[6291456];

                ReadChunk(fs, buffer);

                MemoryStream ms = new MemoryStream(buffer);

                MultiUploadRequestData arg = new MultiUploadRequestData()
                {
                    Bucket = "devdoc", Key = "c# 5.0.pdf", Content = ms, PartNumber = "1", UploadId = result
                };
                MultipartUploadResult result1 = await temp.MultipartUpload(arg, callback);

                ListMultipartUploadsResult listMultipart = await temp.ListMultipartUploads("devdoc");

                //  temp.DeleteMultipartUpload(arg);

                //fs.Position = 6291456;
                //arg = new MultiUploadRequestData() { Bucket = "devdoc", Key = "c# 5.0.pdf", Content = fs, PartNumber = "2", UploadId = result };
                //MultipartUploadResult result2 = await temp.MultipartUpload(arg);

                //ListPartsResult parts = await temp.ListMultiUploadParts("devdoc", "c# 5.0.pdf", result);


                //CompleteMultipartUploadModel model = new CompleteMultipartUploadModel();

                //model.Parts = new List<MultipartUploadPartModel>();
                //model.Parts.Add(new MultipartUploadPartModel(1, result1.ETag));
                //model.Parts.Add(new MultipartUploadPartModel(2, result2.ETag));
                //model.Bucket = "devdoc";
                //model.Key = "c# 5.0.pdf";
                //model.UploadId = result;


                //temp.CompleteMultipartUpload(model);

                //  fs.Dispose();
            }
            catch (AggregateException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Exemplo n.º 7
0
        public async Task <ListMultipartUploadsResult> ListMultipartUploads(string bucketName)
        {
            ListMultipartUploadsResult result             = null;
            OssHttpRequestMessage      httpRequestMessage = null;
            HttpResponseMessage        response           = null;

            try
            {
                Dictionary <string, string> parameters = new Dictionary <string, string>();
                parameters.Add("uploads", null);

                httpRequestMessage = new OssHttpRequestMessage(bucketName, null, parameters);

                httpRequestMessage.Method       = HttpMethod.Get;
                httpRequestMessage.Headers.Date = DateTime.UtcNow;

                OssRequestSigner.Sign(httpRequestMessage, networkCredential);
                response = await httpClient.SendAsync(httpRequestMessage);

                if (response.IsSuccessStatusCode == false)
                {
                    await ErrorResponseHandler.Handle(response);
                }
                var temp = DeserializerFactory.GetFactory().CreateListMultipartUploadsDeserializer();
                result = await temp.Deserialize(response);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (httpRequestMessage != null)
                {
                    httpRequestMessage.Dispose();
                }

                if (response != null)
                {
                    response.Dispose();
                }
            }
            return(result);
        }
Exemplo n.º 8
0
        public void MarshalResponse(IConfig config, ListMultipartUploadsRequest request, ListMultipartUploadsResponse response, IDictionary <string, string> headers, Stream responseStream)
        {
            XmlSerializer s = new XmlSerializer(typeof(ListMultipartUploadsResult));

            using (XmlTextReader r = new XmlTextReader(responseStream))
            {
                r.Namespaces = false;

                ListMultipartUploadsResult listResult = (ListMultipartUploadsResult)s.Deserialize(r);

                if (listResult.EncodingType != null)
                {
                    response.EncodingType = ValueHelper.ParseEnum <EncodingType>(listResult.EncodingType);
                }

                response.KeyMarker          = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listResult.KeyMarker) : listResult.KeyMarker;
                response.NextKeyMarker      = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listResult.NextKeyMarker) : listResult.NextKeyMarker;
                response.Prefix             = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listResult.Prefix) : listResult.Prefix;
                response.Delimiter          = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listResult.Delimiter) : listResult.Delimiter;
                response.Bucket             = listResult.Bucket;
                response.UploadIdMarker     = listResult.UploadIdMarker;
                response.NextUploadIdMarker = listResult.NextUploadIdMarker;
                response.MaxUploads         = listResult.MaxUploads;
                response.IsTruncated        = listResult.IsTruncated;

                if (listResult.CommonPrefixes != null)
                {
                    response.CommonPrefixes = new List <string>(listResult.CommonPrefixes.Count);

                    foreach (CommonPrefix prefix in listResult.CommonPrefixes)
                    {
                        response.CommonPrefixes.Add(prefix.Prefix);
                    }
                }
                else
                {
                    response.CommonPrefixes = Array.Empty <string>();
                }

                if (listResult.Uploads != null)
                {
                    response.Uploads = new List <S3Upload>(listResult.Uploads.Count);

                    foreach (Upload listUpload in listResult.Uploads)
                    {
                        S3Upload s3Upload = new S3Upload();
                        s3Upload.ObjectKey = config.AutoUrlDecodeResponses && response.EncodingType == EncodingType.Url ? WebUtility.UrlDecode(listUpload.Key) : listUpload.Key;
                        s3Upload.UploadId  = listUpload.UploadId;

                        if (listUpload.StorageClass != null)
                        {
                            s3Upload.StorageClass = ValueHelper.ParseEnum <StorageClass>(listUpload.StorageClass);
                        }

                        s3Upload.Initiated = listUpload.Initiated;

                        if (listUpload.Owner != null)
                        {
                            s3Upload.Owner      = new S3Identity();
                            s3Upload.Owner.Name = listUpload.Owner.DisplayName;
                            s3Upload.Owner.Id   = listUpload.Owner.Id;
                        }

                        if (listUpload.Initiator != null)
                        {
                            s3Upload.Initiator      = new S3Identity();
                            s3Upload.Initiator.Name = listUpload.Initiator.DisplayName;
                            s3Upload.Initiator.Id   = listUpload.Initiator.Id;
                        }

                        response.Uploads.Add(s3Upload);
                    }
                }
                else
                {
                    response.Uploads = Array.Empty <S3Upload>();
                }
            }
        }
Exemplo n.º 9
0
        public void MarshalResponse(ListMultipartUploadsRequest request, ListMultipartUploadsResponse response, IDictionary <string, string> headers, Stream responseStream)
        {
            XmlSerializer s = new XmlSerializer(typeof(ListMultipartUploadsResult));

            using (XmlTextReader r = new XmlTextReader(responseStream))
            {
                r.Namespaces = false;

                ListMultipartUploadsResult listResult = (ListMultipartUploadsResult)s.Deserialize(r);
                response.Bucket             = listResult.Bucket;
                response.KeyMarker          = listResult.KeyMarker;
                response.UploadIdMarker     = listResult.UploadIdMarker;
                response.NextKeyMarker      = listResult.NextKeyMarker;
                response.NextUploadIdMarker = listResult.NextUploadIdMarker;

                if (listResult.EncodingType != null)
                {
                    response.EncodingType = EnumsNET.Enums.Parse <EncodingType>(listResult.EncodingType, EnumFormat.EnumMemberValue);
                }

                response.MaxUploads  = listResult.MaxUploads;
                response.IsTruncated = listResult.IsTruncated;
                response.Prefix      = listResult.Prefix;
                response.Delimiter   = listResult.Delimiter;

                if (listResult.CommonPrefixes != null)
                {
                    response.CommonPrefixes = new List <string>(listResult.CommonPrefixes.Count);

                    foreach (CommonPrefix prefix in listResult.CommonPrefixes)
                    {
                        response.CommonPrefixes.Add(prefix.Prefix);
                    }
                }
                else
                {
                    response.CommonPrefixes = Array.Empty <string>();
                }

                if (listResult.Uploads != null)
                {
                    response.Uploads = new List <S3Upload>(listResult.Uploads.Count);

                    foreach (Upload listUpload in listResult.Uploads)
                    {
                        S3Upload s3Upload = new S3Upload();
                        s3Upload.Name     = listUpload.Key;
                        s3Upload.UploadId = listUpload.UploadId;

                        if (listUpload.StorageClass != null)
                        {
                            s3Upload.StorageClass = EnumsNET.Enums.Parse <StorageClass>(listUpload.StorageClass, EnumFormat.EnumMemberValue);
                        }

                        s3Upload.Initiated = listUpload.Initiated;

                        if (listUpload.Owner != null)
                        {
                            s3Upload.Owner      = new S3ObjectIdentity();
                            s3Upload.Owner.Name = listUpload.Owner.DisplayName;
                            s3Upload.Owner.Id   = listUpload.Owner.Id;
                        }

                        if (listUpload.Initiator != null)
                        {
                            s3Upload.Initiator      = new S3ObjectIdentity();
                            s3Upload.Initiator.Name = listUpload.Initiator.DisplayName;
                            s3Upload.Initiator.Id   = listUpload.Initiator.Id;
                        }

                        response.Uploads.Add(s3Upload);
                    }
                }
                else
                {
                    response.Uploads = Array.Empty <S3Upload>();
                }
            }
        }