先说一下背景,半年前在淘宝免费得了一个虚拟空间的1年试用,前几天想自己搞了个网站,换钱申请了一个域名,先试试水,搞个淘宝客,反正现在又是百度K站又是不让备案的,放在国外的空间省事不少,但是麻烦也很快来了.因为服务器在国外,虽然性能还可以,但是国内访问的速度毕竟不行,尤其是图片,淘宝客的网站不可能不放图片吧.虽然图片采用的动态加载,但用户还是可能看上一会儿loading的图片.
无奈之下开始找免费图片空间/相册/图床...
我的想法很简单,原有的流程不变,在后台录入产品信息图片时自动传到一个国内的空间,就是保留2份,原国外服务器一份,国内空间一份,图片文件名还要用原来的,如果国内的不能用了我可以很快的切换.找了几个都不能如愿,像外链吧虽说可以提供API,但是要收费,而且他们好像修改了文件名,总之不是很适合我.
这时看到一个老帖说新浪的开发平台,让我想到了云,百度云,之前好像看过,百度有云存储SDK,有一定额度的免费.然后就开始了各种搜索,找了几个小时,最后才知道,百度云存储有两个,一个叫云存储(BCS),一个叫个人云存储(PCS),都在http://developer.baidu.com/ 上可以找到.
我在PCS上折腾了好一阵,白忙活,这东西需要OAuth验证,跟微博登陆一样的.真正适合的是BCS.
使用BCS需要一些前提条件:
1.必须有百度开发者账号
2.创建密钥对,这个很简单,在百度开发者平台点一下就可以创建,最多20个,1个就够用,这个密钥对就是后面用的ak和sk
3.创建bucket,bucket是一个命名空间,一个目录,上传的文件会放到里面,可以在百度平台上创建,也可以用SDK创建
4.下载对应开发语言的SDK,也是在百度平台上有,我用的是PHP的
准备好这些就可以上传文件了
我原来的后台使用的是swf文件上传,最后页面提交的时候把上传后的文件名保存到数据库,文件名按日期时间生成,不会有重复
下面上核心代码,超简单,比百度附带的例子更简单,更容易上手,几乎每行都有注释
include("bcs-sdk-php_1.2/bcs.class.php"); //载入SDK
$host = 'bcs.duapp.com';
$ak = '****************'; //密钥对的API Key
$sk = '****************'; //密钥对的Secure Key
$bucket = 'uhuigou'; //我已经在百度平台建好了这个bucket,就像创建目录一样
$object = '/' . $data["commimg"]; //保存到百度云的文件名
$fileUpload = realpath('uhuigou/Public/Uploads/'. $data["commimg"]); //已经上传到我服务器的文件路径
$baiduBCS = new BaiduBCS ( $ak, $sk, $host ); //创建百度云存储对象
$response = $baiduBCS->get_bucket_acl( $bucket ); //选择指定的bucket,就像切换数据库,切换目录,创建bucket可以看百度SDK里的例子
if ($response->isOK ()) { // 切换bucket成功
$response = $baiduBCS->create_object ( $bucket, $object, $fileUpload ); //上传文件
if (! $response->isOK ()) { //上传失败执行
die ( "Create object failed." );
}
}
前台调用图片也很简单http://bcs.duapp.com/uhuigou/+原来的文件名就可以访问,这里要提一句,百度为了防盗链,默认文件调用是需要验证的,但是在百度开发者网站的管理中心把相应bucket属性改成公开读就可以了(默认是私有)
最后说一下免费配额,在"账户管理" - "计费标准" 里可以看到
资源属性 | 单价 | 免费额度 |
---|---|---|
流入流量 | 0元/GB | 免费 |
流出流量 | 0.8元/GB | 500MB/天 |
容量 | 0.02元/GB·天 | 5GB/天 |
最后附上自己的小站,如果本文帮到了你,请务必点击,分享 http://www.uhuigou.net