0) return false; if ( is_dir( $src ) ) { if (!file_exists($dest)) mkdir($dest, 0777, true); $d = dir( $src ); while ( false !== ( $entry = $d->read() ) ) { if ( $entry != '.' && $entry != '..' ) LE_FS::copy_folder( "$src/$entry", "$dest/$entry"); } $d->close(); } elseif (!file_exists($dest)) { copy($src, $dest); echo 'copy file '.$src.' to '.$dest."\n
"; } } public static function dir_files($dir,$func=false) { if (!$dir||empty($dir)||!is_dir($dir)) return 1; if($func===false) return 2; $d = dir( $dir ); while ( false !== ( $entry = $d->read() ) ) { if ( $entry == '.' || $entry == '..' ) continue; $func($entry); } $d->close(); } //LE_FS::save_from_post($inp=['f_name'=>,'path'=>]) public static function SAVE_POST($inp,$debug=false) { $f_name = (isset($inp['f_name'])) ? $inp['f_name'] : 'file'; if (!isset($inp['path']) || !is_dir($inp['path'])) return false; $inp['path'] = rtrim($inp['path']); // echo $inp['path']; if (!isset($_FILES[$f_name])) return false; $F = $_FILES[$f_name]; // echo_arr($F); $SAVE_FILE = function($path,$index=false) use (&$F,&$debug) { $f_inf=[]; if ($index!==false) { if (!isset($F["tmp_name"][$index])) return false; $f_inf['tmp_name'] = $tmp_name = $F["tmp_name"][$index]; $f_inf['name'] = $file_name = $F["name"][$index]; $f_inf['type'] = $F["type"][$index]; $f_inf['size'] = $F["size"][$index]; } else { if (!isset($F["tmp_name"])) return false; $f_inf['tmp_name'] = $tmp_name = $F["tmp_name"]; $f_inf['name'] = $file_name = $F["name"]; $f_inf['type'] = $F["type"]; $f_inf['size'] = $F["size"]; } // echo $tmp_name.BR; // echo $file_name.BR; if (!is_uploaded_file($tmp_name)) return false; $n = LE_FS::GEN_FNAME($file_name, $path); $out = $path.DS.$n; if (!move_uploaded_file($tmp_name, $out)) return false; if (!file_exists($out)) return false; if($debug!==false) $debug[$n] = $f_inf; return $n; }; if (is_array($F['tmp_name'])) { $cnt = count($F['tmp_name']); $res = []; for ($i=0;$i<$cnt;$i++) { $_fn = $SAVE_FILE($inp['path'],$i); if ($_fn!==false) $res[] = $_fn; } } else { return $SAVE_FILE($inp['path']); } $cnt = count($res); if (!$cnt>0) return false; if ($cnt===1) return $res[0]; return $res; } public static function GEN_FNAME($inp_name = false, $path = false, $prefix=false) { $ext = ($inp_name) ? '.'.pathinfo ($inp_name,PATHINFO_EXTENSION) : ''; //extension .jpg //file name alphabet $fn_alphabet = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D', 'E','F','G','H','I','J','K','L','M','N','O','P','Q', 'R','S','T','U','V','W','X','Y','Z','_','-' ]; $microtime = microtime(1); $create_time = 1540388275; $diff_time = Ceil($microtime*10000)-($create_time*10000); $new = int2alphabet($fn_alphabet,$diff_time); if ($prefix!==false) $new = $prefix.$new; //проверка существования if ($path && is_dir($path)) { $part = rtrim($path,DS); $i=1; while(is_file($path . DS . $new.$ext)) { if ($i>100) exit("problem gen file name!!!"); $new.=$fn_alphabet[rand(0,27)]; $i++; } } return $new.$ext; } public static function Apply2Files($path,&$func,$recouse=0) { $path = rtrim($path,"/\\").DS; if (!is_dir($path) || !($handle = opendir($path))) return; while(false !== ($f = readdir($handle))) { if($f == "." || $f == "..") continue; $obj=$path.$f; if (is_file($obj)) $func($obj); elseif (is_dir($obj) && $recouse) LE_FS::Apply2Files($obj,$func,$recouse); } closedir($handle); } }