批量删除百度云存储BCS的文件

批量删除百度云存储BCS的文件

因为某些原因要删除BCS里某个bucket内的所有object,但是BAE里面无法直接批量删除(这个方面SAE就好很多了),几百个object也不可能手动一个个删除,上传时候又没有在数据库中保存相关信息,只能通过官方API list object获取object列表,然后逐一删除。原理很简单,首先通过list_object获取bucket内所有object的信息,由于取得的是json,decode之后(特别感谢麦田一根葱的指导)取得object名称,然后用delete object API将object删除。实现方法如下:

1.新建delete.php,上传至BAE某个应用中(或任意主机,需填写变量),内容如下:

//require_once ‘bcs.class.php’; //非BAE环境下需要引用bcs.class.php
$host = ‘bcs.duapp.com’;
$ak = getenv ( ‘HTTP_BAE_ENV_AK’ ); //如果不在BAE环境下,请自行填写ak,下面sk同
$sk = getenv ( ‘HTTP_BAE_ENV_SK’ );
$bucket = ”; //此处填写bucket
function delete_object($baidu_bcs) {
global $bucket;
$opt = array (
‘start’ => 0);
$response = $baidu_bcs->list_object ( $bucket, $opt );
$body = $response->body;
$str = json_decode($body,true);
$i = 0;
while($i<250){ //此处根据bucket中object数量填写
$object= $str[“object_list”][$i][“object”];
$response = $baidu_bcs->delete_object ( $bucket, $object );
echo $object;
echo ‘ ‘;
echo $response->isOK () ? “OK\n” : “NOT OK\n”;
echo ‘
‘;
$i++;
}
}
$baidu_bcs = new BaiduBCS ( $ak, $sk, $host );
delete_object($baidu_bcs);
?>
2.用浏览器访问delete.php,即可以删除完成。

转自Gimhoy’s Blog:http://blog.gimhoy.com/archives/bcs-delete-all-objects.html

标签