/** * 图标上传 */ public function do_upload_icon() { require_once APP_ROOT_PATH . "system/utils/zip.php"; $archive = new PHPZip(); $font_dir = APP_ROOT_PATH . "public/iconfont"; $result = $archive->unZip($_FILES['file']['tmp_name'], $font_dir); if (empty($result) || $result == -1) { ajax_return(array("status" => false, "info" => "图标库更新失败,请手动解压后上传文件到" . $font_dir)); } if ($dir = opendir($font_dir . "/")) { while ($file = readdir($dir)) { $check = is_dir($font_dir . "/" . $file); if (!$check) { @unlink($font_dir . "/" . $file); } } } $result = $archive->unZip($_FILES['file']['tmp_name'], $font_dir); //清空原文件 foreach ($result as $k => $v) { $file = APP_ROOT_PATH . "public/iconfont/" . $k; $file_arr = explode("/", $file); foreach ($file_arr as $f) { if ($f == "iconfont.css" || $f == "iconfont.eot" || $f == "iconfont.svg" || $f == "iconfont.ttf" || $f == "iconfont.woff") { //echo APP_ROOT_PATH."public/iconfont/".$f; @rename($file, APP_ROOT_PATH . "public/iconfont/" . $f); } } } foreach ($result as $k => $v) { $file = APP_ROOT_PATH . "public/iconfont/" . $k; @unlink($file); } foreach ($result as $k => $v) { $file = APP_ROOT_PATH . "public/iconfont/" . $k; @rmdir($file); } ajax_return(array("status" => true, "info" => "")); }
/** * @Title: UnZip * @Description: todo(解压文件) * @param 解压的文件路径 $UnzipUrl * @param 解压后文件的路径 $UnzipPath * @author laicaixia * @date 2013-6-2 上午10:36:51 * @throws */ private function UnZip($UnzipUrl, $UnzipPath) { import("@.ORG.PHPZip"); $archive = new PHPZip(); $zipfile = $UnzipUrl; $savepath = $UnzipPath; //$zipfile = $unzipfile; //$savepath = $unziptarget; $array = $archive->GetZipInnerFilesInfo($zipfile); $filecount = 0; $dircount = 0; $failfiles = array(); set_time_limit(C('PAGE_LIFE_TIME')); //修改为不限制超时时间(默认为30秒) for ($i = 0; $i < count($array); $i++) { if ($array[$i][folder] == 0) { if ($archive->unZip($zipfile, $savepath, $i) > 0) { $filecount++; } else { $failfiles[] = $array[$i][filename]; } } else { $dircount++; } } printf("文件夹:%d 解压文件:%d 失败:%d<br>\r\n", $dircount, $filecount, count($failfiles)); if (count($failfiles) > 0) { foreach ($failfiles as $file) { printf("·%s<br>\r\n", $file); } } }