function copy_dirs($wf, $wto) { if (!file_exists($wto)) { mkdir($wto, 0777); } $arr = ls_a($wf); foreach ($arr as $fn) { if ($fn) { $fl = $wf . "/" . $fn; $flto = $wto . "/" . $fn; if (is_dir($fl)) { copy_dirs($fl, $flto); } else { @copy($fl, $flto); chmod($flto, 0666); } // end 2nd improvement } } }
/** * 复制文件 * @return 成功返回true,失败返回错误信息 */ function process_file() { /* 复制品牌图片 */ $from = $this->sroot . '/images/brand/'; $to = $this->troot . '/data/brandlogo/'; copy_dirs($from, $to); /* 复制商品图片 */ $to = $this->troot . '/images/goods/'; $from = $this->sroot . '/images/goods/'; copy_dirs($from, $to); /* 复制友情链接图片 */ $from = $this->sroot . '/images/link/'; $to = $this->troot . '/data/afficheimg/'; copy_dirs($from, $to); return TRUE; }
/** * 把一个目录的文件复制到另一个目录(包括子目录) * 前提:$from_dir 是目录且存在且可读,$to_dir 是目录且存在且可写 * * @param string $from_dir 源目录 * @param string $to_dir 目标目录 * @param string $file_prefix 文件前缀 * @return mix 成功返回true,否则返回第一个失败的文件名 */ function copy_dirs($from_dir, $to_dir, $file_prefix = '') { $result = true; if (!is_dir($from_dir)) { die("It's not a dir"); } if (!is_dir($to_dir)) { if (!mkdir($to_dir, 0700)) { die("can't mkdir"); } } $handle = opendir($from_dir); while (($file = readdir($handle)) !== false) { if ($file != '.' && $file != '..') { $src = $from_dir . DIRECTORY_SEPARATOR . $file; $dtn = $to_dir . DIRECTORY_SEPARATOR . $file_prefix . $file; if (is_dir($src)) { copy_dirs($src, $dtn); } else { if (!copy($src, $dtn)) { $result = false; break; } } } } closedir($handle); return $result; }