You need to enable JavaScript to run this app.
导航

快速入门(.NET SDK)

最近更新时间2024.02.04 18:31:07

首次发布时间2023.08.24 14:41:46

本文介绍如何快速使用 TOS .NET SDK 完成常见操作,包括创建桶、上传对象、下载对象、列举对象和删除对象。

前提条件

  1. 已安装SDK
  2. 已初始化客户端

创建桶

存储桶(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);
            }
        }
    }
}