使用百度提供的云存储(BCS)来管理我们的数据(上传、下载、删除操作c语言简单示例)

百度开放平台之前有提供网盘API PCS,但不知道为什么该接口已经关闭了(我注册百度开发者的时候就已经关闭了),但从管理控制台中却看到了云存储服务(BCS)。

百度云存储,即BCS(Baidu Cloud Storage),提供object网络存储服务,旨在利用百度在分布式以及网络方面的优势为开发者提供安全、简单、高效的存储服务。

百度云存储提供了一系列简单易用的REST API接口、SDK、工具和方案,使得开发者可以在任何时间、任何地点存储任何类型的数据。通过使用百度云存储服务,开发者可以轻松地开发出扩展性强、稳 定性好、安全快速的分布式网络服务;通过使用云存储服务提供的API、SDK及管理平台,开发者也可以迅速开发出适合各种业务的网络程序。

百度云存储可以支持文本、多媒体、二进制等任何类型的数据,支持签名认证及ACL权限设置进行资源访问控制,开发者可以通过管理控制台直接进行页面上传、下载或通过REST API、Shell Tool、SDK、curl等方式实现上传、下载。

在这里比较重要的地方估计就要数访问控制(ACL)了,ACL主要用来做身份校验和权限管理,本文主要是简单地介绍下如何将文件上传到BCS如何从BCS中下载数据以及如何删除BCS中的数据。

以上传为例使用BCS服务大概有5步

第一步:注册成为百度开发者(这个是必需的)

第二步:创建百度应用(这样就会获取一对密钥,这个是我们后面要用到的)

第三步:创建bucket(bucket可以看成是命名空间,其名称全局唯一,如果某个名称已创建,则其他开发者将无法再创建相同名称的bucket;开发者上传的任何数据必须是属于某个bucket。上传任何数据之前需先确认是否已经创建bucket。)

第四步:上传文件

第五步:权限设置

前两步和最后一步不作说明,第三步创建bucket,这个可以在百度开发者管理控制台中手动创建,也可以使用百度提供的API,创建bucket的API是

PUT /BucketName?[URL签名]

URL签名的算法是这样的

sign=Flag:AccessKey:Signature

Flag表示签名对象的标记包括M、B、O、T、I、S,M指定请求方式,可以有PUT、GET、DELETE、POST、HEAD,B表示
bucket,O表示要存储的文件的名字,T表示URL的有效时间(Unix时间戳),I表示ip访问限制,S表示限制上传文件的大小,
这些标记中除前三种是必需的之外,后几个标记可根据自己的需要自行选择是否使用。

AccessKey就是注册应用后的API KEY,而Signature是数字签名,算法规则是对Secret Key和Content进行HMAC加密后做base64编码,再进行url转码,Content的算法为

这样,我们就可以进行第四步的上传了,在使用如上URL签名算法得到的内容后,我们向http://bcs.duapp.com上传数据,。
这里注意,如果你的bucket创建时是公开的话那么就可以不需要有URL签名部分,如果你创建的bucket是私有的话那么就必需要使用URL签名才能访问你的数据。

URL签名的生成可以使用百度官方提供的URL签名工具,在你创建的bucket页面有个URL签名,点击它填写上相应内容便可
以得到经过加密后的URL,但我们这里使用glib这个库来解决这个问题,我们先以c语言写一个程序用来生成我们的URL,
然后利用curl进行数据的上传、下载和删除操作,最后我再给出一个使用C语言进行上传、下载和删除的简单程序。

编译
gcc -o url url.c mysock/mysock.c -lssl pkg-config --cflags --libs glib-2.0

我们以一个文件名为参数进行输入,这样在得到一个输出后我们使用curl上传这个文件,比如我们要上传url.c这个文件

curl -T url.c ‘使用上面程序生成的URL’
这时去百度开发管理控制台应该已经看到你上传的文件了
下载时只需要将MET的宏值修改为GET即可,而删除时改成DELETE
curl -X DELETE ‘使用上面程序生成的URL’

下面放上使用c语言写的上传、下载和删除操作的程序

–阅读次数(100)

发表评论

电子邮件地址不会被公开。

*