开发者社区> 问答> 正文

.NET-SDK之如何实现快速入门(一)?

在这一章里,我们将学到如何用OSS .NET SDK完成一些基本的操作。

Step-1.初始化一个OssClient


SDK的OSS操作通过OssClient类完成的,下面代码创建一个OssClient对象:using Aliyun.OSS;/// <summary>/// 由用户指定的OSS访问地址、阿里云颁发的AccessKeyId/AccessKeySecret构造一个新的OssClient实例。/// </summary>/// <param name="endpoint">OSS的访问地址。</param>/// <param name="accessKeyId">OSS的访问ID。</param>/// <param name="accessKeySecret">OSS的访问密钥。</param>public void CreateClient(string endpoint, string accessKeyId, string accessKeySecret){var client = new OssClient(endpoint, accessKeyId, accessKeySecret);}


提示:
  • 在上面代码中,变量 accessKeyId 与 accessKeySecret 是由系统分配给用户的,用于标识用户,可能属于您的阿里云账号或者RAM账号 。
  • 关于OssClient的详细介绍,参见 初始化


Step-2. 新建存储空间


存储空间(Bucket)是OSS全局命名空间,相当于数据的容器,可以存储若干文件。您可以按照下面的代码新建一个存储空间:using Aliyun.OSS;/// <summary>/// 在OSS中创建一个新的存储空间。/// </summary>/// <param name="bucketName">要创建的存储空间的名称</param>public void CreateBucket(string bucketName){var client = new OssClient(endpoint, accessKeyId, accessKeySecret);try{var bucket = client.CreateBucket(bucketName);Console.WriteLine("Create bucket succeeded.");Console.WriteLine("Name:{0}", bucket.Name);}catch (Exception ex){Console.WriteLine("Create bucket failed, {0}", ex.Message);}}

提示:
  • 关于存储空间的命名规范,参见管理Bucket中的命名规范。


Step-3. 上传文件


文件(Object)是OSS中最基本的数据单元,用下面代码可以实现上传文件:using Aliyun.OSS;/// <summary>/// 上传指定的文件到指定的OSS的存储空间/// </summary>/// <param name="bucketName">指定的存储空间名称</param>/// <param name="key">文件的在OSS上保存的名称</param>/// <param name="fileToUpload">指定上传文件的本地路径</param>public void PutObject(string bucketName, string key, string fileToUpload){var client = new OssClient(endpoint, accessKeyId, accessKeySecret);try{var result = client.PutObject(bucketName, key, fileToUpload);Console.WriteLine("Put object succeeded");Console.WriteLine("ETag:{0}", result.ETag);}catch (Exception es){Console.WriteLine("Put object failed, {0}", ex.Message);}}

注意:
  • 每个上传的文件,都可以指定和此文件关联的ObjectMeta。
  • ObjectMeta是用户对该文件的描述,由一系列key-value对组成;
  • 为了保证上传文件服务器端与本地一致,用户可以设置Content-MD5,OSS会计算上传数据 的MD5值并与用户上传的MD5值比较,如果不一致返回InvalidDigest错误码。
  • 计算出来的Content-MD5需要在上传时设置给ObjectMetadata的ETag。
  • 关于文件的命名规范和其他更详细的信息,参见上传文件


Step-4. 列出所有文件


当您完成一系列上传后,可能需要查看某个存储空间中有哪些文件,可以通过下面的程序实现:using Aliyun.OSS;/// <summary>/// 列出指定存储空间的文件列表/// </summary>/// <param name="bucketName">存储空间的名称</param>public void ListObjects(string bucketName){var client = new OssClient(endpoint, accessKeyId, accessKeySecret);try{var listObjectsRequest = new ListObjectsRequest(bucketName);var result = client.ListObjects(listObjectsRequest);Console.WriteLine("List object succeeded");foreach (var summary in result.ObjectSummaries){Console.WriteLine(summary.Key);}}catch (Exception es){Console.WriteLine("List object failed, {0}", ex.Message);}}

Step-5. 获取指定文件


您可以参考下面的代码简单地实现一个文件的获取:using Aliyun.OSS;var client = new OssClient(endpoint, accessKeyId, accessKeySecret);/// <summary>/// 从指定的OSS存储空间中获取指定的文件/// </summary>/// <param name="bucketName">要获取的文件所在的存储空间名称</param>/// <param name="key">要获取的文件在OSS上的名称</param>/// <param name="fileToDownload">本地存储下载文件的目录<param>public void GetObject(string bucketName, string key, string fileToDownload){try{var object = client.GetObject(bucketName, key);//将从OSS读取到的文件写到本地using (var requestStream = object.Content){byte[] buf = new byte[1024];using (var fs = File.Open(fileToDownload, FileMode.OpenOrCreate);{var len = 0;while ((len = requestStream.Read(buf, 0, 1024)) != 0){fs.Write(buf, 0, len);}}}}catch (Exception es){Console.WriteLine("Get object failed, {0}", ex.Message);}}

提示:
  • 当调用OssClient的GetObject方法时,会返回一个OssObject的对象,此对象包含了文件的各种信息。
  • 通过OssObject的GetObjectContent方法,可以获取返回的文件的输入流,通过读取此输入流获取此文件的内容,在用完之后关闭这个流。


Step-6. 删除指定文件


您可以参考下面的代码实现一个文件的删除:using Aliyun.OSS;/// <summary>/// 删除指定的文件/// </summary>/// <param name="bucketName">文件所在存储空间的名称</param>/// <param name="key">待删除的文件名称</param>public void DeleteObject(string bucketName, string key){var client = new OssClient(endpoint, accessKeyId, accessKeySecret);try{client.DeleteObject(bucketName, key);Console.WriteLine("Delete object succeeded");}catch (Exception ex){Console.WriteLine("Delete object failed, {0}", ex.Message);}}





展开
收起
青衫无名 2017-10-18 14:51:47 1760 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
从 SDK 到编解码:视频直播架构解析 立即下载
跨平台的云服务SDK需要什么 立即下载
一个跨平台的云服务SDK需要什么 立即下载