快速入门

  1. 初始化一个BosClient。

    BosClient是与BOS服务交互的客户端,BOS C# SDK的BOS操作都是通过BosClient完成的。

    示例代码:

    class BosClientSample
    {
        static void Main(string[] args)
        {
            const string accessKeyId = <AccessKeyID>; // 您的Access Key ID
            const string secretAccessKey = <SecretAccessKey>; // 您的Secret Access Key
            const string endpoint = <EndPoint>;          //传入Bucket所在区域域名
    
            // 初始化一个BosClient
            BceClientConfiguration config = new BceClientConfiguration();
            config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
            config.Endpoint = endpoint;        
            BosClient client = new BosClient(config);
        }
    }
    
  2. 新建一个Bucket。

    Bucket是BOS上的命名空间,相当于数据的容器,可以存储若干数据实体(Object)。在您上传数据前,必须先创建一个Bucket。

    示例代码:

    public void CreateBucket(BosClient client, string bucketName)
    {
    // 新建一个Bucket
    client.CreateBucket(bucketName); 
    }
    
  3. 上传Object。

    Object是BOS中最基本的数据单元,您可以把Object简单的理解为文件。对于一个简单的Object的上传,BOS为您提供了四种方式:文件形式上传、数据流形式上传、二进制串上传和字符串上传。

    示例代码:

    public void PutObject(BosClient client, String bucketName, String objectKey, byte[] byte1, String string1)
    {
    // 获取指定文件
    FileInfo file = new FileInfo(<FilePath>);    //指定文件路径
    
    // 以文件形式上传Object
    PutObjectResponse putObjectFromFileResponse = client.PutObject(bucketName, objectKey, file);
    
    // 获取数据流
    Stream inputStream = file.OpenRead();
    
    // 以数据流形式上传Object
    PutObjectResponse putObjectResponseFromInputStream = client.PutObject(bucketName, objectKey, inputStream);
    
    // 以二进制串上传Object
    PutObjectResponse putObjectResponseFromByte = client.PutObject(bucketName, objectKey,
       Encoding.Default.GetBytes("sampledata"));
    
    // 以字符串上传Object
    PutObjectResponse putObjectResponseFromString = client.PutObject(bucketName, objectKey, "sampledata");
    
    // 打印ETag
    Console.WriteLine(putObjectFromFileResponse.ETAG);
    }
    
  4. 查看Bucket下的Object列表。

    当您完成一系列上传后,可以参考如下代码来查看Bucket下的全部Object。

    示例代码:

    public void ListObjects(BosClient client, string bucketName)
    {
    // 获取指定Bucket下的所有Object信息
    ListObjectsResponse listObjectsResponse = client.ListObjects(bucketName);
    
    // 遍历所有Object
    foreach (BosObjectSummary objectSummary in listObjectsResponse.Contents)
    {
      Console.WriteLine("ObjectKey: " + objectSummary.Key);
    }
    
    }
    
  5. 获取指定Object

    用户可以参考如下代码来实现对一个或者多个Object的获取。

    示例代码:

    public void GetObject(BosClient client, String bucketName, String objectKey)
    {
    // 获取Object,返回结果为BosObject对象
    BosObject bosObject = client.GetObject(bucketName, objectKey);
    
    // 获取ObjectMeta
    ObjectMetadata meta = bosObject.ObjectMetadata;
    
    // 获取Object的输入流
    Stream objectContent = bosObject.ObjectContent;
    
    // 处理Object
    ...
    
    // 关闭流
    objectContent.Close();
    }
    

完整示例

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using BaiduBce;
using BaiduBce.Auth;
using BaiduBce.Services.Bos;
using BaiduBce.Services.Bos.Model;

namespace DotnetSample
{
    internal class BaseSample
    {
        private static void Main(string[] args)
        {
            BosClient client = GenerateBosClient();
            const string bucketName = <BucektName>;    //指定Bucket名称
            const string objectKey = <ObjectKey>;     //指定object名称

            //创建Bucket
            client.CreateBucket(bucketName);

            //上传Object
            FileInfo file = new FileInfo("d:\\lzb\\sample.txt");     //指定上传文件的路径
            PutObjectResponse putObjectFromFileResponse = client.PutObject(bucketName, objectKey, file);
            Console.WriteLine(putObjectFromFileResponse.ETAG);

            //查看Object
            ListObjectsResponse listObjectsResponse = client.ListObjects(bucketName);
            foreach (BosObjectSummary objectSummary in listObjectsResponse.Contents)
            {
                Console.WriteLine("ObjectKey: " + objectSummary.Key);
            }

            // 获取Object
            BosObject bosObject = client.GetObject(bucketName, objectKey);
            // 获取ObjectMeta
            ObjectMetadata meta = bosObject.ObjectMetadata;
            // 获取Object的输入流
            Stream objectContent = bosObject.ObjectContent;
            // 处理Object
            FileStream fileStream = new FileInfo("d:\\lzb\\sampleout.txt").OpenWrite();      //指定下载文件的目录/文件名
            byte[] buffer = new byte[2048];
            int count = 0;
            while ((count = objectContent.Read(buffer, 0, buffer.Length)) > 0)
            {
                fileStream.Write(buffer, 0, count);
            }

            // 关闭流
            objectContent.Close();
            fileStream.Close();
            Console.WriteLine(meta.ETag);
            Console.WriteLine(meta.ContentLength);
        }

        private static BosClient GenerateBosClient()
        {
            const string accessKeyId = <AccessKeyID>; // 您的Access Key ID
            const string secretAccessKey = <SecretAccessKey>; // 您的Secret Access Key
            const string endpoint = <EndPoint>;        //指定Bucket所在区域域名

            // 初始化一个BosClient
            BceClientConfiguration config = new BceClientConfiguration();
            config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);
            config.Endpoint = endpoint;

            return new BosClient(config);
        }
    }
}