/// 列出已上传的分片 public void ListParts() { //.cssg-snippet-body-start:[list-parts] try { string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID string key = "exampleobject"; //对象键 string uploadId = "exampleUploadId"; //初始化分块上传返回的uploadId ListPartsRequest request = new ListPartsRequest(bucket, key, uploadId); //执行请求 ListPartsResult result = cosXml.ListParts(request); //请求成功 //列举已上传的分块 List <COSXML.Model.Tag.ListParts.Part> alreadyUploadParts = result.listParts.parts; Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { //请求失败 Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } //.cssg-snippet-body-end }
private void ListParts() { listPartsRequest = new ListPartsRequest(bucket, key, uploadId); listPartsRequest.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); cosXmlServer.ListParts(listPartsRequest, delegate(CosResult cosResult) { lock (syncExit) { if (isExit) { return; } } ListPartsResult result = cosResult as ListPartsResult; //更新分块 UpdateSliceNums(result); //通知执行PartCopy OnInit(); }, delegate(CosClientException clientEx, CosServerException serverEx) { lock (syncExit) { if (isExit) { return; } } if (UpdateTaskState(TaskState.FAILED)) { OnFailed(clientEx, serverEx); } }); }
public void MultipartUploadAbortInMiddleTest() { 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); Assert.IsTrue(partCount > 1, "Source file is too small to perform multipart upload"); 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)) { //use partCount - 1, so that the last part is left for (var i = 0; i < partCount - 1; 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); uploadPartRequest.InputStream = fs; uploadPartRequest.PartSize = size; uploadPartRequest.PartNumber = (i + 1); var uploadPartResult = _ossClient.UploadPart(uploadPartRequest); // Save the result partETags.Add(uploadPartResult.PartETag); //list parts which are uploaded var listPartsRequest = new ListPartsRequest(_bucketName, targetObjectKey, initResult.UploadId); var listPartsResult = _ossClient.ListParts(listPartsRequest); //there should be only 1 part was not uploaded Assert.AreEqual(i + 1, OssTestUtils.ToArray <Part>(listPartsResult.Parts).Count, "uploaded parts is not expected"); } } //abort the upload var abortRequest = new AbortMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId); _ossClient.AbortMultipartUpload(abortRequest); }
static void ListParts() { try { ListPartsRequest request = new ListPartsRequest() { BucketName = bucketName, ObjectKey = objectName, UploadId = uploadId, MaxParts = 10, PartNumberMarker = 1, }; ListPartsResponse response = client.ListParts(request); Console.WriteLine("List parts response: {0}", response.StatusCode); Console.WriteLine("Lis parts count: " + response.Parts.Count); foreach (PartETag part in response.Parts) { Console.WriteLine("PartNumber: {0}", part.PartNumber); Console.WriteLine("ETag: {0}", part.ETag); } } catch (ObsException ex) { Console.WriteLine("Exception errorcode: {0}, when list parts.", ex.ErrorCode); Console.WriteLine("Exception errormessage: {0}", ex.ErrorMessage); } }
public void MultipartUploadAbortInMiddleTest() { 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); Assert.IsTrue(partCount > 1, "Source file is too small to perform multipart upload"); 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)) { //use partCount - 1, so that the last part is left for (var i = 0; i < partCount - 1; 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); uploadPartRequest.InputStream = fs; uploadPartRequest.PartSize = size; uploadPartRequest.PartNumber = (i + 1); var uploadPartResult = _ossClient.UploadPart(uploadPartRequest); // 将返回的PartETag保存到List中。 partETags.Add(uploadPartResult.PartETag); //list parts which are uploaded var listPartsRequest = new ListPartsRequest(_bucketName, targetObjectKey, initResult.UploadId); var listPartsResult = _ossClient.ListParts(listPartsRequest); //there should be only 1 part was not uploaded Assert.AreEqual(i + 1, listPartsResult.Parts.Count(), "uploaded parts is not expected"); } } //abort the upload var abortRequest = new AbortMultipartUploadRequest(_bucketName, targetObjectKey, initResult.UploadId); _ossClient.AbortMultipartUpload(abortRequest); }
public static void ListParts(COSXML.CosXml cosXml, string bucket, string key, string uploadId) { try { ListPartsRequest request = new ListPartsRequest(bucket, key, uploadId); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //执行请求 ListPartsResult result = cosXml.ListParts(request); QLog.D("XIAO", result.GetResultInfo()); Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { QLog.D("XIAO", clientEx.Message); Console.WriteLine("CosClientException: " + clientEx.Message); } catch (COSXML.CosException.CosServerException serverEx) { QLog.D("XIAO", serverEx.Message); Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }
public static void AsynListParts(COSXML.CosXml cosXml, string bucket, string key, string uploadId) { QLog.D("XIAO", String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId)); ListPartsRequest request = new ListPartsRequest(bucket, key, uploadId); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); cosXml.ListParts(request, delegate(CosResult cosResult) { ListPartsResult result = cosResult as ListPartsResult; Console.WriteLine(result.GetResultInfo()); Console.WriteLine(String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId)); QLog.D("XIAO", result.GetResultInfo()); }, delegate(CosClientException clientEx, CosServerException serverEx) { if (clientEx != null) { QLog.D("XIAO", clientEx.Message); Console.WriteLine("CosClientException: " + clientEx.StackTrace); } if (serverEx != null) { QLog.D("XIAO", serverEx.Message); Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } Console.WriteLine(String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId)); }); }
public static ListPartsCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context, ListPartsRequest listPartsRequest) { return(new ListPartsCommand(client, endpoint, context, DeserializerFactory.GetFactory().CreateListPartsResultDeserializer(), listPartsRequest)); }
/// <summary> /// List parts that have been uploaded for a large file that has not been finished yet. /// </summary> /// <param name="fileId">The large file id whose parts you want to list.</param> /// <exception cref="AuthenticationException">Thrown when authentication fails.</exception> /// <exception cref="ApiException">Thrown when an error occurs during client operation.</exception> async Task <IApiResults <ListPartsResponse> > IStorageParts.ListAsync (string fileId) { var request = new ListPartsRequest(fileId); return(await _client.ListPartsAsync(request, _cancellationToken)); }
public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonGlacierConfig config = new AmazonGlacierConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonGlacierClient client = new AmazonGlacierClient(creds, config); ListPartsResponse resp = new ListPartsResponse(); do { ListPartsRequest req = new ListPartsRequest { Marker = resp.Marker , Limit = maxItems }; resp = client.ListParts(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.Parts) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.Marker)); }
internal ListPartsResponse ListParts(ListPartsRequest request) { var marshaller = new ListPartsRequestMarshaller(); var unmarshaller = ListPartsResponseUnmarshaller.Instance; return(Invoke <ListPartsRequest, ListPartsResponse>(request, marshaller, unmarshaller)); }
private void ListMultiParts() { listPartsRequest = new ListPartsRequest(bucket, key, uploadId); cosXmlServer.ListParts(listPartsRequest, delegate(CosResult cosResult) { lock (syncExit) { if (isExit) { return; } } ListPartsResult result = cosResult as ListPartsResult; //更细listParts UpdateSliceNums(result); //通知执行PartCopy OnInit(); }, delegate(CosClientException clientEx, CosServerException serverEx) { lock (syncExit) { if (isExit) { return; } } if (UpdateTaskState(TaskState.FAILED)) { OnFailed(clientEx, serverEx); } }); }
public Task <ListPartsResponse> ListPartsAsync(string bucketName, string resource, string uploadId, Action <ListPartsRequest> config = null, CancellationToken token = default) { ListPartsRequest req = new ListPartsRequest(bucketName, resource, uploadId); config?.Invoke(req); return(_operations.ListPartsAsync(req, token)); }
/// <summary> /// Initiates the asynchronous execution of the ListParts operation. /// <seealso cref="Amazon.Glacier.IAmazonGlacier"/> /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the ListParts operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public Task <ListPartsResponse> ListPartsAsync(ListPartsRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new ListPartsRequestMarshaller(); var unmarshaller = ListPartsResponseUnmarshaller.Instance; return(InvokeAsync <ListPartsRequest, ListPartsResponse>(request, marshaller, unmarshaller, cancellationToken)); }
public async Task GetEnumerableAsync() { var request = new ListPartsRequest(_fileId); var enumerable = await Storage.Parts.GetEnumerableAsync(request); Assert.Equal(typeof(PartEnumerable), enumerable.GetType()); Assert.True(enumerable.ToList().Count() == 2, "The actual count was not two"); }
public Task <ListPartsResponse> ListPartsAsync(string bucketName, string objectKey, string uploadId, Action <ListPartsRequest>?config = null, CancellationToken token = default) { ListPartsRequest req = new ListPartsRequest(bucketName, objectKey, uploadId); config?.Invoke(req); return(MultipartOperations.ListPartsAsync(req, token)); }
/// <summary> /// List uploaded parts. /// </summary> /// <param name="request">Parameters in a request for listing uploaded parts</param> /// <returns>Response to a request for listing uploaded parts</returns> public ListPartsResponse ListParts(ListPartsRequest request) { return(this.DoRequest <ListPartsRequest, ListPartsResponse>(request, delegate() { if (request.ObjectKey == null) { throw new ObsException(Constants.InvalidObjectKeyMessage, ErrorType.Sender, Constants.InvalidObjectKey, ""); } if (string.IsNullOrEmpty(request.UploadId)) { throw new ObsException(Constants.InvalidUploadIdMessage, ErrorType.Sender, Constants.InvalidUploadId, ""); } })); }
/// <summary> /// 上传完成 /// </summary> /// <param name="task"></param> private void UploadComplete(OssTaskDO task) { //如果是暂停就跳出 if (task.Progress < task.TotalProgress - 1) { //关闭内存流 this.Close(task); //清除配置文件,只有删除状态删除配置 if (task.Status == OssTaskStatus.DELETE) { this.ClearConfig(task); } return; } //线上检查 var ossPath = CheckOssPath(task.UploadOssPath + @"/" + task.UploadOssName); var listPartsRequest = new ListPartsRequest(aliyunOSSConfig.BucketName, ossPath, task.UploadOssId); var listPartsResult = client.ListParts(listPartsRequest); //生成Tag var completeMultipartUploadRequest = new CompleteMultipartUploadRequest(aliyunOSSConfig.BucketName, ossPath, task.UploadOssId); List <PartETag> eTags = new List <PartETag>(); foreach (var item in task.UploadETag) { var values = item.Split(','); eTags.Add(new PartETag(Convert.ToInt32(values[0]), values[1], values[2], Convert.ToInt64(values[3]))); } eTags.Sort((x, y) => x.PartNumber.CompareTo(y.PartNumber)); eTags.ForEach(it => completeMultipartUploadRequest.PartETags.Add(it)); //合并文件上传完成 client.CompleteMultipartUpload(completeMultipartUploadRequest); //保存配置 task.Status = OssTaskStatus.COMPLETE; task.ActualProgress = 100; SaveOssTaskConfig(taskList); //关闭内存流 this.Close(task); //清除配置文件 this.ClearConfig(task); //执行回执 downloadCompleteCallBack?.Invoke(task); }
/// <summary> /// Start the asynchronous request for listing uploaded parts. /// </summary> /// <param name="request">Parameters in a request for listing uploaded parts</param> /// <param name="callback">Asynchronous request callback function</param> /// <param name="state">Asynchronous request status object</param> /// <returns>Response to the asynchronous request</returns> public IAsyncResult BeginListParts(ListPartsRequest request, AsyncCallback callback, object state) { return(this.BeginDoRequest <ListPartsRequest>(request, delegate() { if (request.ObjectKey == null) { throw new ObsException(Constants.InvalidObjectKeyMessage, ErrorType.Sender, Constants.InvalidObjectKey, ""); } if (string.IsNullOrEmpty(request.UploadId)) { throw new ObsException(Constants.InvalidUploadIdMessage, ErrorType.Sender, Constants.InvalidUploadId, ""); } }, callback, state)); }
private static void Populate(ListPartsRequest listPartsRequst, IDictionary <string, string> parameters) { parameters[RequestParameters.UPLOAD_ID] = listPartsRequst.UploadId; if (listPartsRequst.MaxParts != null) { parameters[RequestParameters.MAX_PARTS] = listPartsRequst.MaxParts.ToString(); } if (listPartsRequst.PartNumberMarker != null) { parameters[RequestParameters.PART_NUMBER_MARKER] = listPartsRequst.PartNumberMarker.ToString(); } }
public void ListPartsRequestArgumentCheck() { var targetObjectKey = OssTestUtils.GetObjectKey(_className); try { var listRequest = new ListPartsRequest(_bucketName, targetObjectKey, null); _ossClient.ListParts(listRequest); Assert.Fail("the arg is null, should throw exception."); } catch (Exception e) { Assert.IsTrue(e.Message.Contains("uploadId")); } }
private ListPartsCommand(IServiceClient client, Uri endpoint, ExecutionContext context, IDeserializer <ServiceResponse, PartListing> deserializeMethod, ListPartsRequest listPartsRequest) : base(client, endpoint, context, deserializeMethod) { OssUtils.CheckBucketName(listPartsRequest.BucketName); OssUtils.CheckObjectKey(listPartsRequest.Key); if (string.IsNullOrEmpty(listPartsRequest.UploadId)) { throw new ArgumentException(Resources.ExceptionIfArgumentStringIsNullOrEmpty, "uploadId"); } _listPartsRequest = listPartsRequest; }
public void AsynListParts(COSXML.CosXml cosXml, string bucket, string key, string uploadId) { ListPartsRequest request = new ListPartsRequest(bucket, key, uploadId); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); cosXml.ListParts(request, delegate(CosResult cosResult) { ListPartsResult result = cosResult as ListPartsResult; Console.WriteLine(result.GetResultInfo()); }, delegate(CosClientException clientEx, CosServerException serverEx) { Console.WriteLine(clientEx == null ? serverEx.GetInfo() : clientEx.Message); }); }
/// <summary> /// Send a ListPartsRequest request and return a list of all uploaded parts. /// </summary> /// <param name="existingBucketName"></param> /// <param name="keyName"></param> /// <param name="uploadID"></param> /// <param name="token"></param> /// <returns>Task<List<PartDetail>></returns> public async Task <List <PartDetail> > ListPartsAsync(string existingBucketName, string keyName, string uploadId, CancellationToken token) { token.ThrowIfCancellationRequested(); _log.Debug("Called ListPartsAsync with parameters keyName = \"" + keyName + "\" and uploadID = \"" + uploadId + "\"."); List <PartDetail> parts = new List <PartDetail>(); try { ListPartsRequest request = new ListPartsRequest(); request.BucketName = existingBucketName; request.Key = keyName; request.UploadId = uploadId; ListPartsResponse response = await this.s3Client.ListPartsAsync(request, token).ConfigureAwait(false); parts.AddRange(response.Parts); while (response.IsTruncated) { token.ThrowIfCancellationRequested(); request.PartNumberMarker = response.NextPartNumberMarker.ToString(); response = await this.s3Client.ListPartsAsync(request, token).ConfigureAwait(false); parts.AddRange(response.Parts); } return(parts); } catch (Exception e) { if (!(e is TaskCanceledException || e is OperationCanceledException)) { string messagePart = " with parameters keyName = \"" + keyName + "\" and uploadID = \"" + uploadId + "\""; this.LogAmazonException(messagePart, e); } throw; } }
/// <summary> /// 根据款号查询文件夹位置 /// </summary> /// <param name="style"></param> /// <returns></returns> public string GetObjectlist(string style) { const string accessId = "X9foTnzzxHCk6gK7"; const string accessKey = "ArQYcpKLbaGweM8p1LQDq5kG1VIMuz"; const string endpoint = "http://oss-cn-shenzhen.aliyuncs.com"; const string bucketName = "best-bms"; ListPartsRequest lir = new ListPartsRequest(bucketName, accessKey, accessId); Aliyun.OpenServices.ClientConfiguration configu = new Aliyun.OpenServices.ClientConfiguration(); OssClient client = new OssClient(endpoint, accessId, accessKey); string Uploadpath = ""; DataTable tab = new DataTable(); tab.Columns.Add("Cat", typeof(string)); tab.Columns.Add("Cat2", typeof(string)); tab.Columns.Add("Style", typeof(string)); tab.Columns.Add("Scode", typeof(string)); tab.Columns.Add("Image", typeof(string)); try { ObjectListing list = client.ListObjects(bucketName); IEnumerable <OssObjectSummary> objects = list.ObjectSummaries; string[] arr; foreach (OssObjectSummary ob in objects) { arr = ob.Key.Split('/'); if (arr.Length == 5) { tab.Rows.Add(new object[] { arr[1], arr[2], arr[3], arr[4] }); if (arr[3] == style)//查找style文件夹 { Uploadpath = arr[0] + "/" + arr[1] + "/" + arr[2] + "/" + arr[3] + "/"; } } } } catch (OssException ex) { } return(Uploadpath); }
public Task <ListPartsResponse> ListPartsAsync(ListPartsRequest request, CancellationToken token = default) { return(_requestHandler.SendRequestAsync <ListPartsRequest, ListPartsResponse>(request, token)); }
public void ListParts(ListPartsRequest request, Callback.OnSuccessCallback <CosResult> successCallback, Callback.OnFailedCallback failCallback) { Schedue(request, new ListPartsResult(), successCallback, failCallback); }
public ListPartsResult ListParts(ListPartsRequest request) { return((Model.Object.ListPartsResult)Excute(request, new Model.Object.ListPartsResult())); }
public Task <ListPartsResponse> ListPartsAsync(ListPartsRequest request, CancellationToken cancellationToken = default) { throw new NotImplementedException(); }
private static async Task UploadFileAsync(string filePath) { try { List <UploadPartResponse> uploadResponses = new List <UploadPartResponse>(); var j = new FileInfo(filePath); //do some logic... var uploadToApi = await ffApi.GetUploadOnFileName(j.Name); string uploadId = uploadToApi.S3Id; if (uploadToApi.Id == null || uploadToApi.Status == UploadType.Uploaded) { string key = generateID(); Amazon.S3.Model.InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest { BucketName = bucketName, Key = key, CannedACL = S3CannedACL.AuthenticatedRead }; request.Metadata.Add("fname", j.Name); request.Metadata.Add("transfer-created", DateTime.UtcNow.ToString()); request.Metadata.Add("up-version", "0.1;closed"); InitiateMultipartUploadResponse response = await s3Client.InitiateMultipartUploadAsync(request); uploadId = response.UploadId; uploadToApi = await ffApi.CreateUpload(new Upload { filename = j.Name, S3Id = uploadId, Key = key, Status = UploadType.Initialized }); } Console.WriteLine("uploadid: " + uploadId); // Upload parts. long contentLength = new FileInfo(filePath).Length; long partSize = 50000000; // 50 mb Console.WriteLine("part size: " + partSize + " bytes"); Console.WriteLine("Finding parts"); //first we check for the parts.. ListPartsRequest listPartsRequest = new ListPartsRequest { BucketName = bucketName, Key = uploadToApi.Key, UploadId = uploadId }; var listParts = await s3Client.ListPartsAsync(listPartsRequest); int currentPart = Math.Max(listParts.NextPartNumberMarker, 0); long filePosition = currentPart * partSize; for (int i = currentPart + 1; filePosition < contentLength; i++) { Console.WriteLine("Uploading part index: " + i); UploadPartRequest uploadRequest = new UploadPartRequest { BucketName = bucketName, Key = uploadToApi.Key, UploadId = uploadId, PartNumber = i, PartSize = partSize, FilePosition = filePosition, FilePath = filePath }; // Track upload progress. uploadRequest.StreamTransferProgress += new EventHandler <StreamTransferProgressArgs>(UploadPartProgressEventCallback); // Upload a part and add the response to our list. var res = await s3Client.UploadPartAsync(uploadRequest); filePosition += partSize; } // Setup to complete the upload. listParts = await s3Client.ListPartsAsync(listPartsRequest); List <PartETag> t = new List <PartETag>(); foreach (var p in listParts.Parts) { t.Add(new PartETag { ETag = p.ETag, PartNumber = p.PartNumber }); } CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest { BucketName = bucketName, Key = uploadToApi.Key, UploadId = uploadId }; completeRequest.AddPartETags(t); // Complete the upload. CompleteMultipartUploadResponse completeUploadResponse = await s3Client.CompleteMultipartUploadAsync(completeRequest); uploadToApi.Status = UploadType.Uploaded; var updated = await ffApi.UpdateUpload(uploadToApi, uploadId); } catch (Exception x) { Log.Error(x.ToString()); } }