本节介绍如何快速使用OSS .NET SDK完成常见操作,如创建存储空间、上传文件、下载文件等。
创建存储空间
存储空间是OSS全局命名空间,相当于数据的容器,可以存储若干文件。 以下代码用于新建一个存储空间:
using Aliyun.OSS; var endpoint = "<yourEndpoint>"; var accessKeyId = "<yourAccessKeyId>"; var accessKeySecret = "<yourAccessKeySecret>"; var bucketName = "<yourBucketName>"; // 创建OSSClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { // 创建存储空间。 var bucket = client.CreateBucket(bucketName); Console.WriteLine("Create bucket succeeded, {0} ", bucket.Name); } catch (Exception ex) { Console.WriteLine("Create bucket failed, {0}", ex.Message); }
存储空间的命名规范,请参见基本概念中的命名规范。创建存储空间详情,请参见创建存储空间。
获取endpoint信息,请参见访问域名和数据中心文档。
上传文件
以下代码用于上传文件至OSS:
using Aliyun.OSS; 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 { // 上传文件。 var result = client.PutObject(bucketName, objectName, localFilename); Console.WriteLine("Put object succeeded, ETag: {0} ", result.ETag); } catch (Exception ex) { Console.WriteLine("Put object failed, {0}", ex.Message); }
详情请参见上传文件 。
下载文件
以下代码用于将指定的OSS文件下载到本地文件:
using Aliyun.OSS; using Aliyun.OSS.Common; var endpoint = "<yourEndpoint>"; var accessKeyId = "<yourAccessKeyId>"; var accessKeySecret = "<yourAccessKeySecret>"; var bucketName = "<yourBucketName>"; var objectName = "<yourObjectName>"; var localFilename = "<yourLocalFilename>"; var downloadFilename = "<yourDownloadFilename>"; // 创建OSSClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { // 下载文件。 var result = client.GetObject(bucketName, objectName); using (var requestStream = result.Content) { using (var fs = File.Open(downloadFilename, FileMode.OpenOrCreate)) { int length = 4 * 1024; var buf = new byte[length]; do { length = requestStream.Read(buf, 0, length); fs.Write(buf, 0, length); } while (length != 0); } } Console.WriteLine("Get object succeeded"); } 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); }
列举文件
以下代码用于列举指定存储空间下的文件。默认列举100个文件。
using Aliyun.OSS; using Aliyun.OSS.Common; var endpoint = "<yourEndpoint>"; var accessKeyId = "<yourAccessKeyId>"; var accessKeySecret = "<yourAccessKeySecret>"; var bucketName = "<yourBucketName>"; // 创建OSSClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { var objects = new List<string>(); ObjectListing result = null; string nextMarker = string.Empty; do { var listObjectsRequest = new ListObjectsRequest(bucketName) { Marker = nextMarker, }; // 列举文件。 result = client.ListObjects(listObjectsRequest); foreach (var summary in result.ObjectSummaries) { Console.WriteLine(summary.Key); objects.Add(summary.Key); } nextMarker = result.NextMarker; } while (result.IsTruncated); Console.WriteLine("List objects of bucket:{0} succeeded ", bucketName); } 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); }
删除文件
以下代码用于删除指定文件:
using Aliyun.OSS; var endpoint = "<yourEndpoint>"; var accessKeyId = "<yourAccessKeyId>"; var accessKeySecret = "<yourAccessKeySecret>"; var bucketName = "<yourBucketName>"; var objectName = "<yourObjectName>"; // 创建OSSClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { // 删除文件。 client.DeleteObject(bucketName, objectName); Console.WriteLine("Delete object succeeded"); } catch (Exception ex) { Console.WriteLine("Delete object failed, {0}", ex.Message); }