用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4308|回复: 7
收起左侧

[已解决] 请教:CI如何创建多级目录,是用递归吗?如何实现啊

[复制链接]
发表于 2012-2-25 15:22:28 | 显示全部楼层 |阅读模式
创建多级目录的问题,文件上传的时候,文件不存在会出错,怎么才能根据路径创建相应的目录呢,
递归函数也不知道怎么改,怎么用,请教大家看看怎么弄
PHP复制代码
 
        function createFolder($path){
                if(!file_exists($path)) {
                        ctreateFolder(dirname($path));//这里要怎么改写啊
                        mkdir($path,0700);
                }
        }
 
复制代码

方法中调用方法,我用$this-> self::,放在控制器,模型中都不行,该如何实现呢
发表于 2012-2-25 15:47:19 | 显示全部楼层
 楼主| 发表于 2012-2-25 15:59:11 | 显示全部楼层
本帖最后由 phptree 于 2012-2-25 16:02 编辑
huboo82 发表于 2012-2-25 15:47
你看看这个能用不。
http://home.phpchina.com/space.php?uid=100535&do=blog&id=183467

谢谢大大,函数我明白,就是不知道放在CI里如何用,因为用到递归,函数里面的函数,在ci下调用显示错误
发表于 2012-2-25 16:15:00 | 显示全部楼层
另一个
PHP复制代码
 
function create_dirs($dir, $mode='0777')
{
       if(!is_dir($dir)){
              $this->create_dirs(dirname($dir), $mode);
              mkdir($dir, $mode);
       }
       return true;
}
 
复制代码

地址:http://laiguowei2004.blog.163.co ... 900020111161042247/

点评

燃雲大大说的对,mkdir($path, 0700, true);后面加个true就实现递归了,不用麻烦写函数的,在网上搞了name多,居然都在写函数递归呢  发表于 2012-2-27 10:30
谢谢大大,用这个代码就搞定了,其实我也试过$this->,但当时就是不行,今天居然就搞定了,嘿嘿  发表于 2012-2-27 10:25
发表于 2012-2-25 20:41:42 | 显示全部楼层
PHP复制代码
       
        function makedir($dir_name, $mode = 0777) {
                $dir_name = str_replace ( "\\", "/", $dir_name );
                $dir_name = preg_replace ( "#(/" . "/+)#", "/", $dir_name );
                if (is_dir ( $dir_name ) !== false) {
                        return true;
                }
                $dir_name = explode ( "/", $dir_name );
                $dirs = '';
                foreach ( $dir_name as $dir ) {
                        if (trim ( $dir ) != '') {
                                $dirs .= $dir . "/";
                                if (is_dir ( $dirs ) == false && @mkdir ( $dirs, $mode ) === false) {
                                        return false;
                                } else {
                               
                                }
                        }
                }
                return true;
        }
复制代码


提供一个函数。希望可以用得上

点评

mkdir($path, 0700, true);后面加个true就自动实现递归了,也告诉你一下,嘿嘿  发表于 2012-2-27 10:32
发表于 2012-2-26 00:50:42 | 显示全部楼层
php 创建目录的函数支持递归。。。不用自己写,大家要多看PHP手册呀。
http://php.net/manual/en/function.mkdir.php

点评

谢谢大大,看来要好好读一下目录这块的文档了,应该养成好习惯,嘿嘿  发表于 2012-2-27 10:33
发表于 2012-2-26 07:39:11 | 显示全部楼层
太喜欢编程了!

PHP复制代码
mkdir($path, 0700, true);
复制代码


第三个是递归参数,缺省是false。

英文版也许不受欢迎。

http://www.php.net/manual/zh/function.mkdir.php

点评

谢谢大大,不认真读手册,真是忙死人啊!  发表于 2012-2-27 10:30
发表于 2012-2-27 13:01:03 | 显示全部楼层
sdink 发表于 2012-2-25 20:41
提供一个函数。希望可以用得上

真好。学到个东西。感谢

本版积分规则