全部产品
阿里云办公

快速入门

更新时间:2018-08-13 11:26:05

请确认您已经熟悉OSS的基本概念,如存储空间(Bucket)、文件/对象(Object)、访问域名(Endpoint)、访问密钥(AccessKey,包括AccessKeyId和AccessKeySecret)等。

本节您将看到如何快速使用OSS .NET SDK完成常见操作,如创建存储空间、上传文件、下载文件等。

初始化OssClient

下面代码用于创建一个OssClient:

  1. using Aliyun.OSS;
  2. /// <summary>
  3. /// 由用户指定的OSS访问地址、阿里云颁发的AccessKeyId/AccessKeySecret构造一个新的OssClient实例。
  4. /// </summary>
  5. /// <param name="endpoint">OSS的访问地址。</param>
  6. /// <param name="accessKeyId">OSS的访问ID。</param>
  7. /// <param name="accessKeySecret">OSS的访问密钥。</param>
  8. public void CreateClient(string endpoint, string accessKeyId, string accessKeySecret)
  9. {
  10. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  11. }

关于OssClient的详细介绍,请参见 初始化

新建存储空间

存储空间是OSS全局命名空间,相当于数据的容器,可以存储若干文件。

以下代码用于新建一个存储空间:

  1. using Aliyun.OSS;
  2. /// <summary>
  3. /// 在OSS中创建一个新的存储空间。
  4. /// </summary>
  5. /// <param name="bucketName">要创建的存储空间的名称</param>
  6. public void CreateBucket(string bucketName)
  7. {
  8. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  9. try
  10. {
  11. var bucket = client.CreateBucket(bucketName);
  12. Console.WriteLine("Create bucket succeeded.");
  13. Console.WriteLine("Name:{0}", bucket.Name);
  14. }
  15. catch (Exception ex)
  16. {
  17. Console.WriteLine("Create bucket failed, {0}", ex.Message);
  18. }
  19. }

关于存储空间的命名规范,请参见管理Bucket中的命名规范。

上传文件

文件是OSS中最基本的数据单元。

以下代码用于上传文件:

  1. using Aliyun.OSS;
  2. /// <summary>
  3. /// 上传指定的文件到指定的OSS的存储空间
  4. /// </summary>
  5. /// <param name="bucketName">指定的存储空间名称</param>
  6. /// <param name="key">文件的在OSS上保存的名称</param>
  7. /// <param name="fileToUpload">指定上传文件的本地路径</param>
  8. public void PutObject(string bucketName, string key, string fileToUpload)
  9. {
  10. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  11. try
  12. {
  13. var result = client.PutObject(bucketName, key, fileToUpload);
  14. Console.WriteLine("Put object succeeded");
  15. Console.WriteLine("ETag:{0}", result.ETag);
  16. }
  17. catch (Exception ex)
  18. {
  19. Console.WriteLine("Put object failed, {0}", ex.Message);
  20. }
  21. }

上传文件详情,请参见上传文件

列举文件

当您完成一系列上传后,可能需要查看某个存储空间中有哪些文件。

以下代码用于列举文件:

  1. using Aliyun.OSS;
  2. /// <summary>
  3. /// 列出指定存储空间的文件列表
  4. /// </summary>
  5. /// <param name="bucketName">存储空间的名称</param>
  6. public void ListObjects(string bucketName)
  7. {
  8. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  9. try
  10. {
  11. var listObjectsRequest = new ListObjectsRequest(bucketName);
  12. var result = client.ListObjects(listObjectsRequest);
  13. Console.WriteLine("List object succeeded");
  14. foreach (var summary in result.ObjectSummaries)
  15. {
  16. Console.WriteLine(summary.Key);
  17. }
  18. }
  19. catch (Exception ex)
  20. {
  21. Console.WriteLine("List object failed, {0}", ex.Message);
  22. }
  23. }

获取文件

以下代码用于对指定文件内容的读取:

  1. using Aliyun.OSS;
  2. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  3. /// <summary>
  4. /// 从指定的OSS存储空间中获取指定的文件
  5. /// </summary>
  6. /// <param name="bucketName">要获取的文件所在的存储空间名称</param>
  7. /// <param name="key">要获取的文件在OSS上的名称</param>
  8. /// <param name="fileToDownload">本地存储下载文件的目录<param>
  9. public void GetObject(string bucketName, string key, string fileToDownload)
  10. {
  11. try
  12. {
  13. var obj = client.GetObject(bucketName, key);
  14. //将从OSS读取到的文件写到本地
  15. using (var requestStream = obj.Content)
  16. {
  17. byte[] buf = new byte[1024];
  18. using (var fs = File.Open(fileToDownload, FileMode.OpenOrCreate))
  19. {
  20. var len = 0;
  21. while ((len = requestStream.Read(buf, 0, 1024)) != 0)
  22. {
  23. fs.Write(buf, 0, len);
  24. }
  25. }
  26. }
  27. }
  28. catch (Exception ex)
  29. {
  30. Console.WriteLine("Get object failed, {0}", ex.Message);
  31. }
  32. }

当调用OssClient的GetObject方法时,会返回一个OssObject对象,此对象包含了文件的各种信息。

通过调用OssObject的GetObjectContent方法,可以获取返回的文件输入流,通过读取此输入流获取此文件的内容,在用完之后关闭这个流。

删除文件

以下代码用于删除指定文件:

  1. using Aliyun.OSS;
  2. /// <summary>
  3. /// 删除指定的文件
  4. /// </summary>
  5. /// <param name="bucketName">文件所在存储空间的名称</param>
  6. /// <param name="key">待删除的文件名称</param>
  7. public void DeleteObject(string bucketName, string key)
  8. {
  9. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  10. try
  11. {
  12. client.DeleteObject(bucketName, key);
  13. Console.WriteLine("Delete object succeeded");
  14. }
  15. catch (Exception ex)
  16. {
  17. Console.WriteLine("Delete object failed, {0}", ex.Message);
  18. }
  19. }
本文导读目录