又拍云递归删除目录及文件

偶然翻看了一下又拍云存储的api文档,发现无法删除非空目录,简单写了一个,使用Yii框架,所以可能看起来有点怪,见谅吧。


 1 <?php
2
3 /**
4 * 文件说明.
5 *
6 * @author Kun Xu <[email protected]>
7 */
8 class UpyunController extends Controller
9 {
10
11 /**
12 * 删除文件夹及文件,递归删除目录及文件.
13 */
14 public function actionRemoveDirQuiet($path = ‘/‘, $bucketname = ‘<bucketname>‘)
15 {
16 $bucketname = ‘<bucketname>‘; //空间名.
17 $username = ‘<username>‘; //操作者账号.
18 $password = ‘<password>‘; //操作者密码.
19 Yii::import(‘ext.UpYun‘); //Yii引入UpYun SDK,记得将upyun.class.php改名为UpYun.php放入extensions目录.
20 $upYun = new UpYun($bucketname, $username, $password);
21 if (strncasecmp(‘/‘, $path, 1) !== 0) {
22 $path = ‘/‘ . $path;
23 }
24 $this->removeDir($path, $upYun); //调用删除方法.
25 }
26
27 /**
28 * 删除目录.
29 * @param string $path 要删除的目录路径.
30 * @param UpYun $upYun UpYun实例.
31 */
32 private function removeDir($path, $upYun)
33 {
34 // file_put_contents(‘/home/xukun/upyun.log‘, ‘[removedir方法]‘ . $path . PHP_EOL, FILE_APPEND);
35 $list = $upYun->getList($path); //获取目录列表信息.
36 if ($list) {
37 foreach ($list as $item) {
38 $file = $path . ‘/‘ . $item[‘name‘];
39 if ($this->isDir($file, $upYun)) {//是文件夹,递归删除子文件夹文件.
40 // file_put_contents(‘/home/xukun/upyun.log‘, ‘[下一个removedir方法]‘ . $file . PHP_EOL, FILE_APPEND);
41 $this->removeDir($file, $upYun);
42 } else {//普通文件,直接删除
43 // file_put_contents(‘/home/xukun/upyun.log‘, ‘[删除文件]‘ . $file . PHP_EOL, FILE_APPEND);
44 $upYun->deleteFile($file);
45 }
46 }
47 }
48 // file_put_contents(‘/home/xukun/upyun.log‘, ‘[删除空目录]‘ . $path . PHP_EOL, FILE_APPEND);
49 $upYun->rmDir($path);
50 }
51
52
53 /**
54 * 判断文件是否是一个目录,是返回true,否则返回false.
55 * @param string $path 要判断的路径.
56 * @param UpYun $upYun UpYun实例.
57 * @return boolean
58 */
59 private function isDir($path = ‘/‘, UpYun $upYun)
60 {
61 if (strncasecmp(‘/‘, $path, 1) !== 0) {
62 $path = ‘/‘ . $path;
63 }
64 $info = $upYun->getFileInfo($path);
65 $type = $info[‘x-upyun-file-type‘];
66 if ($type == ‘folder‘) {
67 return true;
68 } else {
69 return false;
70 }
71 }
72
73 }

时间: 2024-10-30 01:01:57

又拍云递归删除目录及文件的相关文章

PHP 递归删除目录中文件

/** * 递归删除目录中文件 * @param $pathname * @return bool */public static function delDir($pathname)//要删除的目录{ if(file_exists($pathname)) { if(is_file($pathname)) { unlink($pathname); } else { $dir = opendir($pathname); while($filename = readdir($dir)) { if($

rimraf命令 递归删除目录所有文件

使用webpack build文件项目时每次都会生成一个dist目录,有时需要把dist目录里的所以旧文件全部删掉, 除了可以使用rm -rf /dist/命令删除外,还可以使用rimraf /dist/命令 rimraf 的作用:以包的形式包装rm -rf命令,用来删除文件和文件夹的,不管文件夹是否为空,都可删除 局部安装:npm install rimraf --save-dev 全局安装:npm install rimraf -g 使用:rimraf <path> [<path&g

又拍云 Node.js 实现文件上传、删除

Node.js 服务端 使用 Node.js + Express.js 实现 服务端 const express = require("express"); const app = express(); const axios = require('axios'); app.set('port', process.env.PORT || 8082); // 静态资源目录,这里放在了根目录,生产环境不允许这样 app.use(express.static(__dirname)); //

JAVA递归删除目录及包含的全部文件

JAVA递归删除目录及包含的全部文件/** * 递归删除某一个目录 * @param objDir 目标目录文件 * @return 是否删除成功,true为成功 */ public static boolean deleteDir(File objDir) { if (objDir.exists()) { File[] dirs = objDir.listFiles(); for (int i = 0; i < dirs.length; i++) { if (dirs[i].isDirecto

递归删除目录下的所有文件

import java.io.File; public class DeleteDirectory { /** * 删除空目录 * @param dir 将要删除的目录路径 */ private static void doDeleteEmptyDir(String dir) { boolean success = (new File(dir)).delete(); if (success) { System.out.println("Successfully deleted empty dir

rrmdir php中递归删除目录及目录下的文件

php自带的rmdir,只能删除空目录,这个rrmdir就可以递归删除目录及目录下的所有文件,不过使用起来要小心哦,不要把所有文件都删了 function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != “.” && $object != “..”) { if (filetype($dir.”/”.$object) == “

递归删除目录下的所有文件及子目录下的所有文件

package com.test; import java.io.File; public class FileTest3 { public static void main(String[] args) { // TODO Auto-generated method stub FileTest3.doDeleteEmptyDir("e:\\new_dir1"); String newDir2 = "e:\\Hello"; boolean success = del

UEditor扩展又拍云图片存储功能实践

介绍 UEditor:http://ueditor.baidu.com/website/index.html UPYUN:https://www.upyun.com/index.html 步骤 UEditor文件目录 1.action_upload.php处理上传附件和上传视频 case 'uploadimage': require_once('upyun.class.php'); //文章专用upyun空间 $bucket='XXX';//upyun空间名 $upyun_user='XXX';

趣拍云:深耕细作 打造最专业短视频开发平台

短视频是指视频长度不超过2分钟,通过短视频平台拍摄.编辑.上传.播放.分享.互动的,视频形态涵盖纪录短片.DV短片.视频剪辑.微电影.广告片段等的视频短片的统称,伴随着社交媒体的迅猛发展以及网络带宽.云技术等基础条件的成熟,短视频市场在2016年迎来了爆发式增长,据有关数据显示,预计到2020年,短视频内容消费贡献的广告营收将是现在的10倍,达到600亿元人民币.如此巨大的市场,自然吸引了众多参与者,而杭州短趣网络传媒技术有限公司就是其中一个参与者,他们于2016年1月推出的 "趣拍云"