Gimhoy's Blog

您曾经浏览过

删除百度云存储BCS某个bucket中的所有object

本文最后更新于2013年8月14日,已超过三年没有更新,如果文章内容失效,请反馈给我们,谢谢!

因为某些原因要删除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某个应用中(或任意主机,需填写变量),内容如下:

<?php
//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 '<br>';
		$i++;
	}
}
$baidu_bcs = new BaiduBCS ( $ak, $sk, $host );
delete_object($baidu_bcs);
?>

2.打开delete.php。看到下图所示即删除成功。
bcs-delete-object



免费获得每月10G空间+10G免费流量
No tags
  • Comment (19)
  • Trackback (0)
  • 富裕书Mozilla FirefoxWindowsChina2014/01/31 07:35@Ta

    你好,博主!请教一下~~ 有没有办法可以让我一次性下载bucket里面的全部文件呢?我想换地方存储~~~

    #7
    • GimhoyGoogle ChromeWindowsChina2014/01/31 11:04@Ta

      弄一个数组循环应该可以

  • 袁源Google ChromeWindowsChina2014/01/09 19:04@Ta

    谢谢博主,迁移到 SAE 想批量下载来着,看来这个方法可行。没准加个 zip 方法之类还能打包下载了。赞一个!

    #6
  • 阿文Google ChromeWindowsChina2013/09/30 11:19@Ta

    bcs.class.php
    这个文件在哪里? 或请贴出代码,谢谢!

    #5
  • 感情网Google ChromeWindowsChina2013/09/02 16:42@Ta

    百度现在越来越严格了

    #4
  • 感情网Google ChromeWindowsChina2013/09/02 16:41@Ta

    您好,博主,您的博客好像是用的 亚马逊的云服务和安全宝搭配吗? 听说亚马逊有免费的云空间 ?可以免费建站是吧。你博客速度很快 不错 赞!

    #3
    • GimhoyGoogle ChromeWindowsChina2013/09/02 16:48@Ta

      都没用。。。亚马逊有免费试用的VPS,安全宝不是很推荐

      • 感情网Google ChromeWindowsChina2013/09/02 16:50@Ta

        @Gimhoy:可以推荐下你使用主机的链接吗?

        • GimhoyGoogle ChromeWindowsChina2013/09/02 17:05@Ta

          推荐阿里云,功能不是很多的话也可以用BAE/SAE等云空间

  • 残雪Google ChromeWindowsChina2013/08/22 22:39@Ta

    木有用啊。。我传上去,打开就下载了个delete.php 打开是not found flie

    #2
    • GimhoyGoogle ChromeWindowsChina2013/08/22 22:40@Ta

      @残雪:亲~上传到BAE 不是BCS

      • 残雪Google ChromeWindowsChina2013/08/22 22:41@Ta

        @Gimhoy:canxue.duapp.com/delete.php

        • GimhoyGoogle ChromeWindowsChina2013/08/22 22:48@Ta

          app.conf里面加一条

           - url : (.*)\.php$ script : $1.php
          • 残雪Google ChromeWindowsChina2013/08/22 22:53@Ta

            @Gimhoy:无用

            • GimhoyGoogle ChromeWindowsChina2013/08/22 22:55@Ta

              @残雪:稍等一会儿 app.conf生效慢

              • 残雪Google ChromeWindowsChina2013/08/22 23:02@Ta

                @Gimhoy:无用啊、、//

                • GimhoyGoogle ChromeWindowsChina2013/08/23 01:07@Ta

                  囧。。那个应用里其他页面打开正常不?

  • 开发吧Google ChromeWindowsChina2013/08/22 22:29@Ta

    博主是我马虎,少copy了代码的错,不过能否优化一下,将bcs下的很多文件夹也一并删除呢?谢谢!

    #1
    • GimhoyGoogle ChromeWindowsChina2013/08/22 22:37@Ta

      文件夹似乎没有办法。。因为根本就没办法获取文件夹。。。

  • 还没有Trackback