开发者社区> 问答> 正文

OSS的PHP的SDK中怎么批量删除文件?

OSS的PHP的SDK中怎么批量删除文件?
我在上面上传的的文件比较多,按照目录结构表示。
object删除的时候能否使用通配符的办法,给一个前缀,后面用通配符一次删除一堆文件?
有人写过这样的方法嘛?

展开
收起
jerryli 2013-10-14 16:48:46 10903 0
3 条回答
写回答
取消 提交回答
  • 回2楼jerryli的帖子
    你最后的while不对吧,$iCnt时当前object总数量,$iGroup是每次删除的数量,是50,当两个相等的时候才执行?很莫名其妙
    2013-12-26 11:02:10
    赞同 展开评论 打赏
  • ReOSS的PHP的SDK中怎么批量删除文件?
    的确用的时候会不安全,但是这个跟你在mysql中用truncate table 这个是一个道理的。
    下面是我写的代码片段

        /**
         * 批量删除文件<br>
         * 注意: 文件会被直接删除
         * @param string $Prefix 需要批量删除的object的key前缀(不能为空)
         * @return void
         */
        public function deleteAll($Prefix)
        {
            static $iGroup = 50; //每次批量删除处理的分组大小


            if (empty($Prefix))
                return;


            $aGetListParam = array('Bucket'=> $this->msBucket, 'Prefix'=> $Prefix, 'MaxKeys'=>$iGroup);
            $aDeleteParam = array('Bucket'=> $this->msBucket, 'Key'=>'');
            do
            {
                $iCnt = 0;
                $objectListing = $this->mOSS->listObjects($aGetListParam); //取一组分组数据
                $aFileBuf = array(); //初始化缓存
                /*取出列表*/
                foreach ($objectListing->getObjectSummarys() as $objectSummary)
                    $aFileBuf[] = $objectSummary->getKey();
                $iCnt = count($aFileBuf);
                unset($objectListing);
                /*删除列表内的object*/
                foreach ($aFileBuf as $sNode)
                {
                    $aDeleteParam['Key'] = $sNode;
                     $this->mOSS->deleteObject($aDeleteParam);
                }
                unset($aFileBuf);
            }while($iCnt === $iGroup);
        }
    2013-10-21 17:35:03
    赞同 展开评论 打赏
  • ReOSS的PHP的SDK中怎么批量删除文件?
    我写过类似的功能,是一个根据前缀做批量删除的函数。

    结果调用接口的人传了一个空字符串进来,然后~~~~~

    之后,我果断不做这个功能了。
    2013-10-15 11:27:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载