Ø  简介

本文主要介绍如何使用百度云的 C# SDK 操作 BOS(Baidu Object Storage/百度对象存储),以及常见问题和解决办法。本文将以以下几点展开学习:

1.   基本介绍

2.   创建 BaiduBce.Services.Bos.BosClient 对象

3.   获取 Bucket 集合

4.   获取指定 Bucket 中的所有 ObjectKey

5.   上传对象(文件)

6.   下载对象(文件)

7.   常见问题及解决办法

1.   基本介绍

1)   什么是 BOS?

BOS(Baidu Object Storage/百度对象存储)提供稳定、安全、高效以及高扩展存储服务,支持单文件最大5TB的文本、多媒体、二进制等任何类型的数据存储。简单的说,就是可以将文件存储至白云的服务器中,并提供了上传、下载等机制的一个平台。更多介绍核心概念

2)   什么是 C# SDK?

SDK(Software Development Kit/软件开发工具包)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。就是根据软件体现设计出来了软件开发包,可以使用这个软件开发包快速的开发,具有快速、简单、高效等优点。一个完整的 SDK 应该具有不同语言或平台,这样才能应用于各种平台,本文主要学习百度云 BOS 的 C# SDK 的使用。

3)   入门介绍

1.   产品定价

BOS 并不是一个完全免费的平台,收费标准可参考:按需计费 或者咨询百度云客服专员。刚开始试用两天,后面就会因为欠费停用 BOS!

2.   API 参考

除了使用 SDK 工具包,另外可以使用 API 接口 来操作 BOS,但本文先不去讨论这一块的内容。

3.   安装 SDK 工具包

参考链接:安装 SDK 工具包

4.   C# SDK 文档

参考链接:快速入门

5.   开发准备

参考链接:开发准备

2.   创建 BaiduBce.Services.Bos.BosClient 对象

/// <summary>

/// 创建 BaiduBce.Services.Bos.BosClient 对象。

/// </summary>

private static BosClient GenerateBosClient()

{

const string accessKeyId = "xxxxbba3f39d43799d29c130d40fxxxx";      //您的Access Key ID

const string secretAccessKey = "xxxx1520394e4754943108720899xxxx";  //您的Secret Access Key

/*

* 北京区域:http://bj.bcebos.com

* 广州区域:http://gz.bcebos.com

* 苏州区域:http://su.bcebos.com

*/

const string endpoint = "http://bj.bcebos.com";     //指定BOS服务域名

BceClientConfiguration config = new BceClientConfiguration();

config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);

config.Endpoint = endpoint;

return new BosClient(config);

}

1)   注意:将要操作的 Bucket 必须与所属区域地址对应。

2)   更多:参考API

3.   获取 Bucket 集合

/// <summary>

/// 获取 Bucket 集合。

/// </summary>

public static void GetBuckets()

{

BosClient client = GenerateBosClient();

List<BucketSummary> buckets = client.ListBuckets().Buckets;

foreach (BucketSummary bucket in buckets)

{

Console.WriteLine(bucket.Name);

}

}

1)   运行结果(创建的两个Bucket):

bjbosdata

gzbosdata

2)   更多:参考API

4.   获取指定 Bucket 中的所有 ObjectKey

/// <summary>

/// 获取指定 Bucket 中的所有 ObjectKey.

/// </summary>

public static void GetObjectKeys()

{

BosClient client = GenerateBosClient();

ListObjectsResponse listObjectsResponse = client.ListObjects("bjbosdata");

foreach (BosObjectSummary objectSummary in listObjectsResponse.Contents)

{

Console.WriteLine("ObjectKey: " + objectSummary.Key);

}

}

1)   运行结果:

ObjectKey: default_files/

ObjectKey: default_files/AspNetMVC4Setup_CHS.exe

5.   上传对象(文件)

/// <summary>

/// 上传文件。

/// </summary>

public static void UploadFile()

{

string fileName = @"F:\ToStudy\其他\开放平台\百度云开放平台\BosFiles\AspNetMVC4Setup.exe";

FileInfo file = new FileInfo(fileName);

const string bucketName = "bjbosdata";  //Bucket名称

const string objectKey = @"default_files/AspNetMVC4Setup.exe";  //指定object名称

BosClient client = GenerateBosClient();

//以文件形式上传Object

PutObjectResponse putObjectFromFileResponse = client.PutObject(bucketName, objectKey, file);

Console.WriteLine(putObjectFromFileResponse.ETAG);  //c71157d9b3a4105b2d3c5a968d0ced0a

}

更多(上传形式):参考API

6.   下载对象(文件)

/// <summary>

/// 下载文件。

/// </summary>

public static void DownLoadFile()

{

string path = @"F:\ToStudy\其他\开放平台\百度云开放平台\BosFiles\";

if (!Directory.Exists(path))

Directory.CreateDirectory(path);

const string bucketName = "bjbosdata";  //Bucket名称

const string objectKey = @"default_files/AspNetMVC4Setup.exe";  //指定object名称

BosClient client = GenerateBosClient();

BosObject bosObject = client.GetObject(bucketName, objectKey);

using (Stream objectStream = bosObject.ObjectContent)

{

//下载文件的存储路径

string fileName = string.Format(@"{0}AspNetMVC4Setup_{1}.exe", path, DateTime.Now.Millisecond);

using (FileStream fileStream = new FileInfo(fileName).OpenWrite())

{

byte[] buffer = new byte[2048];

int count = 0;

while ((count = objectStream.Read(buffer, 0, buffer.Length)) > 0)

{

fileStream.Write(buffer, 0, count);

}

}

}

}

更多:参考API

7.   常见问题及解决办法

1)   如何获取 Access Key ID 和 Secret Access Key?

1.   登录百度云

2.   点击右侧的【安全中心】

2)   You must active bos service. (Status Code: 403; Error Code: OptInRequired; Request ID: f07b81b4-70ed-4f36-a57f-adad6ab1e82c)

1.   可能产生的异常代码:List<BucketSummary> buckets = client.ListBuckets().Buckets;

2.   解决办法:

1)   点击进入,左侧的【对象存储BOS】

2)   激活“BOS 服务”

3)   The specified bucket is not valid. (Status Code: 400; Error Code: InvalidBucketName; Request ID: bc25b87b-1521-4031-86cb-cf623e1ae4de)

1.   可能产生的异常代码:List<BucketSummary> buckets = client.ListBuckets().Buckets;

2.   解决办法:

1)   点击进入【Bucket管理】

2)   新建Bucket

4)   The specified key does not exist. (Status Code: 404; Error Code: NoSuchKey; Request ID: 53b5c8b9-3e9e-4850-b252-68bf9caaeb32)

1.   可能产生的异常代码:BosObject bosObject = client.GetObject(bucketName, objectKey);

2.   解决办法:

1)   确认创建的 bucket 下的文件或者文件必须存在,例如:

const string objectKey = @"default_files/AspNetMVC4Setup.exe";  //指定object名称

使用百度云 BOS 和 C# SDK 开发数据存储的更多相关文章

  1. IOS开发数据存储篇—IOS中的几种数据存储方式

    IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...

  2. 关于Android开发数据存储的方式(一)

    关于Android开发数据存储方式(一) 在厦门做Android开发也有两个月了,快情人节了.我还在弄代码. 在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下: 整体的来讲.数据存储方 ...

  3. android 开发-数据存储之文件存储

    android的文件存储是通过android的文件系统对数据进行临时的保存操作,并不是持久化数据,例如网络上下载某些图片.音频.视频文件等.如缓存文件将会在清理应用缓存的时候被清除,或者是应用卸载的时 ...

  4. Android开发--数据存储之数据库操作

    简介: SQLite 的介绍: SQLite数据库属于文本型的数据库,它是以文本的形式来保存的.Android提供了对 SQLite 数据库的完全支持,应用程序中的任何类都可以通过名称来访问任何的数据 ...

  5. Android开发--数据存储之File文件存储

    转载来自:http://blog.csdn.net/ahuier/article/details/10364757,并进行扩充 引言:Android开发中的数据存储方式 Android提供了5种方式存 ...

  6. Android开发数据存储之ContentProvider详解

    转载:十二.ContentProvider和Uri详解 一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可 ...

  7. Android应用开发-数据存储和界面展现(二)(重制版)

    SQLite数据库 // 自定义类MyOpenHelper继承自SQLiteOpenHelper MyOpenHelper oh = new MyOpenHelper(getContext(), &q ...

  8. Android应用开发-数据存储和界面展现(一)(重制版)

    常见布局 相对布局(RelativeLayout) 相对布局下控件默认位置都是左上角(左对齐.顶部对齐父元素),控件之间可以重叠 可以相对于父元素上下左右对齐,相对于父元素水平居中.竖直居中.水平竖直 ...

  9. Android应用开发-数据存储和界面展现(二)

    SQLite数据库 // 自定义类MyOpenHelper继承自SQLiteOpenHelper MyOpenHelper oh = new MyOpenHelper(getContext(), &q ...

随机推荐

  1. 数据库原理 - 序列4 - 事务是如何实现的? - Redo Log解析(续)

    > 本文节选自<软件架构设计:大型网站技术架构与业务架构融合之道>第6.4章节. 作者微信公众号:> 架构之道与术.进入后,可以加入书友群,与作者和其他读者进行深入讨论.也可以 ...

  2. yaml的用法

    yaml是用来读配置文件的. 一般用yaml或者yml结尾创建文件,格式:key: value.然后在用的时候,像打开文件一样读,返回数据可直接转为字典 使用的时候必须先安装模块并导入.安装:pip ...

  3. C++ 精英化趋势

    精英化趋势 C++ 是一门引起无数争议的语言.眼下最常听到的声音则是 C++ 将趋于没落,会被某某语言取代.我很怀疑这种论调的起点是商业宣传,C++ 的真实趋势应该是越来越倾向于精英化. 精英化是指在 ...

  4. IDEA快捷建使用

    因为以前使用的IDE工具是Eclipse,所以在公司中都是用IDEA的情况下,换成了IDEA,感觉是好用了很多. 其他快捷键: Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表 ...

  5. Spring Boot – Jetty配置

    前言 默认情况下,Spring Boot会使用内置的tomcat容器去运行应用程序,但偶尔我们也会考虑使用Jetty去替代Tomcat:对于Tomcat和Jetty,Spring Boot分别提供了对 ...

  6. 【c的文件操作】文本文件和二进制文件(内存映像)的不同 文件结尾判断feof , EOF

    查看 stdio.h 可以看到如下定义: #define  EOF  (-1) #define  _IOEOF  0x0010  #define  feof(_stream)  ((_stream)- ...

  7. 01——Solr学习之全文检索服务系统的基础认识

    一.为什么要用Solr,Solr是个什么东西? 1.1.Solr是个开源的搜索服务器 1.2.我们用Solr主要实现搜索功能,一般的网站首页都会有一个大大的搜索框,用来搜索此网站上的商品啊什么的,如下 ...

  8. gVim编辑器 操作篇

    gVim是一款强大的编辑器,可以满足大部分语言的编程需要.尤其是其自带的模板定制功能对于Verilog来说非常受用.然而gVim有很多操作是不同于其他编辑器的,这让很多初学者望而却步,因此,本文将gV ...

  9. 内核调试打印dump_stack

    https://blog.csdn.net/dragon101788/article/details/9419175 在函数中加入dump_stack函数 需要包含的头文件: #include < ...

  10. IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository

    转自:IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository 今天将IntellIJ IDEA 关于Maven的配置总结一下,方便以后可参考. IDEA版本: Intel ...