进度条用于指示上传或下载的进度。
进度条的完整代码请参见 GitHub。
下面的代码以PutObject方法为例,介绍如何使用进度条。
using System; using System.IO; using System.Text; using Aliyun.OSS; using Aliyun.OSS.Common; namespace PutObjectProgress { class Program { static void Main(string[] args) { Program.PutObjectProgress(); Console.ReadKey(); } public static void PutObjectProgress() { var endpoint = "<yourEndpoint>"; var accessKeyId = "<yourAccessKeyId>"; var accessKeySecret = "<yourAccessKeySecret>"; var bucketName = "<yourBucketName>"; var objectName = "<yourObjectName>"; var localFilename = "<yourLocalFilename>"; // 创建OssClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); // 带进度条的上传。 try { using (var fs = File.Open(localFilename, FileMode.Open)) { var putObjectRequest = new PutObjectRequest(bucketName, objectName, fs); putObjectRequest.StreamTransferProgress += streamProgressCallback; client.PutObject(putObjectRequest); } Console.WriteLine("Put object:{0} succeeded", objectName); } catch (OssException ex) { Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID: {2}\tHostID: {3}", ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId); } catch (Exception ex) { Console.WriteLine("Failed with error info: {0}", ex.Message); } } // 获取上传进度。 private static void streamProgressCallback(object sender, StreamTransferProgressArgs args) { System.Console.WriteLine("ProgressCallback - Progress: {0}%, TotalBytes:{1}, TransferredBytes:{2} ", args.TransferredBytes * 100 / args.TotalBytes, args.TotalBytes, args.TransferredBytes); } } }