本文介绍如何快速使用 TOS .NET SDK 完成常见操作,包括创建桶、上传对象、下载对象、列举对象和删除对象。
存储桶(Bucket)是 TOS 的全局唯一的命名空间,相当于数据的容器,用来储存对象数据。如下代码展示如何使用 CreateBucket 方法创建一个新存储桶:
说明
关于创建桶的更多信息,请参见创建桶。
using System; using TOS; using TOS.Error; using TOS.Model; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS var endpoint = "*** Provide your endpoint ***"; var region = "*** Provide your region ***"; // 填写 BucketName var bucketName = "*** Provide your bucket name ***"; // 创建TOSClient实例 var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build(); try { // 创建存储空间输入 var createBucketInput = new CreateBucketInput() { Bucket = bucketName }; // 创建存储空间。 var createBucketOutput = client.CreateBucket(createBucketInput); Console.WriteLine("Create bucket succeeded, request id {0} ", createBucketOutput.RequestID); Console.WriteLine("Create bucket succeeded, status code {0} ", createBucketOutput.StatusCode); } catch (TosServerException ex) { Console.WriteLine("Create bucket failed, request id {0}", ex.RequestID); Console.WriteLine("Create bucket failed, status code {0}", ex.StatusCode); Console.WriteLine("Create bucket failed, response error code {0}", ex.Code); Console.WriteLine("Create bucket failed, response error message {0}", ex.Message); } catch (TosClientException ex) { Console.WriteLine("Create bucket failed, error message {0}", ex.Message); } catch (Exception ex) { Console.WriteLine("Create bucket failed, {0}", ex.Message); } } } }
桶创建成功后,可以往桶中上传对象。以下代码展示如何上传字符串到已创建的桶中。
说明
关于上传对象的更多信息,请参见上传对象。
using System; using System.IO; using System.Text; using TOS; using TOS.Error; using TOS.Model; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS // Bucket 的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com var endpoint = "https://tos-cn-beijing.volces.com"; var region = "cn-beijing"; // 填写 BucketName var bucketName = "*** Provide your bucket name ***"; // 填写对象名 var objectKey = "*** Provide your object key ***"; // 上传对象 Body , 以 string 对象为例 var objectContent = "object content"; // 创建TOSClient实例 var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build(); try { var binaryData = Encoding.UTF8.GetBytes(objectContent); using (var requestContent = new MemoryStream(binaryData)) { // 创建上传文件输入 var putObjectInput = new PutObjectInput { Bucket = bucketName, Key = objectKey, Content = requestContent }; // 上传文件 var putObjectOutput = client.PutObject(putObjectInput); Console.WriteLine("Put object succeeded, ETag: {0} ", putObjectOutput.ETag); } } catch (TosServerException ex) { Console.WriteLine("Put object failed, request id {0}", ex.RequestID); Console.WriteLine("Put object failed, status code {0}", ex.StatusCode); Console.WriteLine("Put object failed, response error code {0}", ex.Code); Console.WriteLine("Put object failed, response error message {0}", ex.Message); } catch (TosClientException ex) { Console.WriteLine("Put object failed, error message {0}", ex.Message); } catch (Exception ex) { Console.WriteLine("Put object failed, {0}", ex.Message); } } } }
以下代码展示如何从桶中下载一个已经存在的对象。
说明
关于下载对象的更多信息,请参见下载对象。
using System; using System.IO; using TOS; using TOS.Error; using TOS.Model; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS // Bucket 的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com var endpoint = "https://tos-cn-beijing.volces.com"; var region = "cn-beijing"; // 填写 BucketName var bucketName = "*** Provide your bucket name ***"; // 填写对象名 var objectKey = "*** Provide your object key ***"; // 创建TOSClient实例 var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build(); try { // 创建下载对象输入 var getObjectInput = new GetObjectInput() { Bucket = bucketName, Key = objectKey, }; // 下载对象 var putObjectOutput = client.GetObject(getObjectInput); Console.WriteLine("Get object succeeded, requestId: {0} ", putObjectOutput.RequestID); Console.WriteLine("Get object succeeded, ETag: {0} ", putObjectOutput.ETag); Console.WriteLine("Get object succeeded, status code: {0} ", putObjectOutput.StatusCode); using (var reader = new StreamReader(putObjectOutput.Content)) { var body = reader.ReadToEnd(); Console.WriteLine("Get object succeeded, body: {0} ", body); } } catch (TosServerException ex) { Console.WriteLine("Get object failed, request id {0}", ex.RequestID); Console.WriteLine("Get object failed, status code {0}", ex.StatusCode); Console.WriteLine("Get object failed, response error code {0}", ex.Code); Console.WriteLine("Get object failed, response error message {0}", ex.Message); } catch (TosClientException ex) { Console.WriteLine("Get object failed, error message {0}", ex.Message); } catch (Exception ex) { Console.WriteLine("Get object failed, {0}", ex.Message); } } } }
以下代码展示如何从桶中列举已上传的对象。
说明
关于列举对象的更多信息,请参见列举对象。
using System; using TOS; using TOS.Error; using TOS.Model; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS // Bucket 的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com var endpoint = "https://tos-cn-beijing.volces.com"; var region = "cn-beijing"; // 填写 BucketName var bucketName = "*** Provide your bucket name ***"; // 创建TOSClient实例 var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build(); try { // 创建列举对象输入 var listObjectsInput = new ListObjectsInput() { Bucket = bucketName, }; // 列举对象 var listObjectsOutput = client.ListObjects(listObjectsInput); Console.WriteLine("List object Request id, {0}", listObjectsOutput.RequestID); // 通过判断 IsTruncated 判断是否需要继续列举对象,若需要继续列举对象下次列举时需要传入返回的 NextMarker if (!listObjectsOutput.IsTruncated) { listObjectsInput.Marker = listObjectsOutput.NextMarker; listObjectsOutput = client.ListObjects(listObjectsInput); Console.WriteLine("List object Request id, {0}", listObjectsOutput.RequestID); } } catch (TosServerException ex) { Console.WriteLine("List object failed, request Id {0}", ex.RequestID); Console.WriteLine("List object failed, status code {0}", ex.StatusCode); Console.WriteLine("List object failed, response error code {0}", ex.Code); Console.WriteLine("List object failed, response error message {0}", ex.Message); } catch (TosClientException ex) { Console.WriteLine("List object failed, error message {0}", ex.Message); } catch (Exception ex) { Console.WriteLine("List object failed, {0}", ex.Message); } } } }
以下代码展示如何从桶中删除一个已经存在的对象。
说明
关于删除对象的更多信息,请参见删除对象。
using System; using TOS; using TOS.Error; using TOS.Model; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS // Bucket 的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com var endpoint = "https://tos-cn-beijing.volces.com"; var region = "cn-beijing"; // 填写 BucketName var bucketName = "*** Provide your bucket name ***"; // 填写对象名 var objectKey = "*** Provide your object key ***"; // 创建TOSClient实例 var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build(); try { // 创建删除对象输入 var deleteObjectInput = new DeleteObjectInput() { Bucket = bucketName, Key = objectKey }; // 删除对象 var deleteObjectOutput = client.DeleteObject(deleteObjectInput); Console.WriteLine("Delete object Request id, {0}", deleteObjectOutput.RequestID); Console.WriteLine("Delete object response status code, {0}", deleteObjectOutput.StatusCode); } catch (TosServerException ex) { Console.WriteLine("Delete object failed, request id {0}", ex.RequestID); Console.WriteLine("Delete object failed, status code {0}", ex.StatusCode); Console.WriteLine("Delete object failed, response error code {0}", ex.Code); Console.WriteLine("Delete object failed, response error message {0}", ex.Message); } catch (TosClientException ex) { Console.WriteLine("Delete object failed, error message {0}", ex.Message); } catch (Exception ex) { Console.WriteLine("Delete object failed, {0}", ex.Message); } } } }