php 百度云储存,百度云储存批量下载脚本

b45d0c161d2d11a855db61aad10c8a03.png

前些时间在BAE上搭了一个应用,数据写入了百度云储存BCS里。现在想将BCS里的数据搬走,但是官方并没有提供一个一键下载的功能。只好自己写了一个,运行良好。

此脚本在本地PHP环境下运行,需要开启CURL拓展。代码里的krumo是一个调试输出类,如果你没有这个类,直接注释掉即可,不影响功能。bcs的相关类库请自行在此下载。如果发现脚本运行超时,请自行修改php的max_execution_time,给它一个大一点的数值,30秒肯定不够的。

/**

* Author: hankcs

* Date  : 14-3-29

* Time  : 下午10:29

*/

ini_set("max_execution_time", 36000);

require_once '../bcs.class.php';

require_once '../krumo/class.krumo.php';

$host = 'bcs.duapp.com';

$ak = '你的公钥';

$sk = '你的私钥';

$bucket = '要下载的bucket名称';

$baidu_bcs = new BaiduBCS ( $ak, $sk, $host );

$response = json_decode($baidu_bcs->list_object ( $bucket, array('start' => 0,'limit' => 1024,) )->body);

$downloaded_size = 0;

while($downloaded_size object_total)

{

krumo($response);

// 下载它们

foreach($response->object_list as $object)

{

if(!$object->is_dir)

{

mk_dir('.'.$object->parent_dir);

$result = $baidu_bcs->get_object ( $bucket, $object->object, array ("fileWriteTo" => '.'.$object->object ) );

}

}

$downloaded_size += count($response->object_list);

$response = json_decode($baidu_bcs->list_object ( $bucket, array('start' => $downloaded_size,'limit' => 1024,) )->body);

}

function mk_dir($dir, $mode = 0755)

{

if (is_dir($dir) || @mkdir($dir,$mode)) return true;

if (!mk_dir(dirname($dir),$mode)) return false;

return @mkdir($dir,$mode);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值