public static void AsynUploadParts(COSXML.CosXml cosXml, string bucket, string key, string uploadId, int partNumber, string srcPath) { UploadPartRequest request = new UploadPartRequest(bucket, key, partNumber, uploadId, srcPath); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); request.SetCosProgressCallback(delegate(long completed, long total) { Console.WriteLine(String.Format("progress = {0} / {1} : {2:##.##}%", completed, total, completed * 100.0 / total)); }); //执行请求 cosXml.UploadPart(request, delegate(CosResult result) { UploadPartResult getObjectResult = result as UploadPartResult; Console.WriteLine(getObjectResult.GetResultInfo()); 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()); } }); }
public static void UploadParts(COSXML.CosXml cosXml, string bucket, string key, string uploadId, int partNumber, string srcPath) { try { UploadPartRequest request = new UploadPartRequest(bucket, key, partNumber, uploadId, srcPath); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //设置进度回调 request.SetCosProgressCallback(delegate(long completed, long total) { Console.WriteLine(String.Format("{0} progress = {1} / {2} : {3:##.##}%", DateTime.Now.ToString(), completed, total, completed * 100.0 / total)); }); //执行请求 UploadPartResult result = cosXml.UploadPart(request); Console.WriteLine(result.GetResultInfo()); QLog.D("XIAO", result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { QLog.D("XIAO", clientEx.Message); Console.WriteLine("CosClientException: " + clientEx.StackTrace); } catch (COSXML.CosException.CosServerException serverEx) { QLog.D("XIAO", serverEx.Message); Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }
public void MultiUpload(COSXML.CosXml cosXml, string bucket, string key, string srcPath) { try { InitMultipartUploadRequest initMultipartUploadRequest = new InitMultipartUploadRequest(bucket, key); //设置签名有效时长 initMultipartUploadRequest.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //执行请求 InitMultipartUploadResult initMultipartUploadResult = cosXml.InitMultipartUpload(initMultipartUploadRequest); Console.WriteLine(initMultipartUploadResult.GetResultInfo()); string uploadId = initMultipartUploadResult.initMultipartUpload.uploadId; ListPartsRequest listPartsRequest = new ListPartsRequest(bucket, key, uploadId); //设置签名有效时长 listPartsRequest.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //执行请求 ListPartsResult listPartsResult = cosXml.ListParts(listPartsRequest); Console.WriteLine(listPartsResult.GetResultInfo()); int partNumber = 1; UploadPartRequest uploadPartRequest = new UploadPartRequest(bucket, key, partNumber, uploadId, srcPath); //设置签名有效时长 uploadPartRequest.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //设置进度回调 uploadPartRequest.SetCosProgressCallback(delegate(long completed, long total) { //Console.WriteLine(String.Format("{0} progress = {1} / {2} : {3:##.##}%", DateTime.Now.ToString(), completed, total, completed * 100.0 / total)); }); //执行请求 UploadPartResult uploadPartResult = cosXml.UploadPart(uploadPartRequest); Console.WriteLine(uploadPartResult.GetResultInfo()); string eTag = uploadPartResult.eTag; CompleteMultipartUploadRequest completeMultiUploadRequest = new CompleteMultipartUploadRequest(bucket, key, uploadId); //设置签名有效时长 completeMultiUploadRequest.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //设置已上传的parts completeMultiUploadRequest.SetPartNumberAndETag(partNumber, eTag); //执行请求 CompleteMultipartUploadResult completeMultiUploadResult = cosXml.CompleteMultiUpload(completeMultiUploadRequest); Console.WriteLine(completeMultiUploadResult.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx.StackTrace); Assert.True(false); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); Assert.True(false); } }
private void UploadPart() { int size = sliceList.Count; sliceCount = size; uploadPartRequestMap = new Dictionary <UploadPartRequest, long>(size); uploadPartRequestList = new List <UploadPartRequest>(size); for (int i = 0; i < size; i++) { if (isExit) { return; } SliceStruct sliceStruct = sliceList[i]; if (!sliceStruct.isAlreadyUpload) { UploadPartRequest uploadPartRequest = new UploadPartRequest(bucket, key, sliceStruct.partNumber, uploadId, srcPath, sliceStruct.sliceStart, sliceStruct.sliceLength); uploadPartRequest.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //打印进度 uploadPartRequest.SetCosProgressCallback(delegate(long completed, long total) { lock (syncProgress) { long dataLen = hasReceiveDataLength + completed - uploadPartRequestMap[uploadPartRequest]; UpdateProgress(dataLen, sendContentLength, false); hasReceiveDataLength = dataLen; uploadPartRequestMap[uploadPartRequest] = completed; } }); uploadPartRequestMap.Add(uploadPartRequest, 0); uploadPartRequestList.Add(uploadPartRequest); cosXmlServer.UploadPart(uploadPartRequest, delegate(CosResult result) { lock (syncExit) { if (isExit) { return; } } UploadPartResult uploadPartResult = result as UploadPartResult; sliceStruct.eTag = uploadPartResult.eTag; lock (syncPartCopyCount) { sliceCount--; if (sliceCount == 0) { OnPart(); return; } } }, delegate(CosClientException clientEx, CosServerException serverEx) { lock (syncExit) { if (isExit) { return; } } if (UpdateTaskState(TaskState.FAILED)) { OnFailed(clientEx, serverEx); } return; }); } else { lock (syncPartCopyCount) { sliceCount--; if (sliceCount == 0) { OnPart(); return; } } } } }