You need to enable JavaScript to run this app.
对象存储

对象存储

复制全文
.NET
快速入门(.NET SDK)
复制全文
快速入门(.NET SDK)

本文介绍如何快速使用 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);
            }
        }
    }
}
最近更新时间:2024.02.04 18:31:07
这个页面对您有帮助吗?
有用
有用
无用
无用