📄 files.php
字号:
<?php/** * File Utilities. * @author $Author: mschering $ * @version $Id: Files.php,v 1.1 2006/03/23 10:01:31 mschering Exp $ * @package ImageManager */define('FILE_ERROR_NO_SOURCE', 100);define('FILE_ERROR_COPY_FAILED', 101);define('FILE_ERROR_DST_DIR_FAILED', 102);define('FILE_COPY_OK', 103);/** * File Utilities * @author $Author: mschering $ * @version $Id: Files.php,v 1.1 2006/03/23 10:01:31 mschering Exp $ * @package ImageManager * @subpackage files */class Files { /** * Copy a file from source to destination. If unique == true, then if * the destination exists, it will be renamed by appending an increamenting * counting number. * @param string $source where the file is from, full path to the files required * @param string $destination_file name of the new file, just the filename * @param string $destination_dir where the files, just the destination dir, * e.g., /www/html/gallery/ * @param boolean $unique create unique destination file if true. * @return string the new copied filename, else error if anything goes bad. */ function copyFile($source, $destination_dir, $destination_file, $unique=true) { if(!(file_exists($source) && is_file($source))) return FILE_ERROR_NO_SOURCE; $destination_dir = Files::fixPath($destination_dir); if(!is_dir($destination_dir)) Return FILE_ERROR_DST_DIR_FAILED; $filename = Files::escape($destination_file); if($unique) { $dotIndex = strrpos($destination_file, '.'); $ext = ''; if(is_int($dotIndex)) { $ext = substr($destination_file, $dotIndex); $base = substr($destination_file, 0, $dotIndex); } $counter = 0; while(is_file($destination_dir.$filename)) { $counter++; $filename = $base.'_'.$counter.$ext; } } if (!copy($source, $destination_dir.$filename)) return FILE_ERROR_COPY_FAILED; //verify that it copied, new file must exists if (is_file($destination_dir.$filename)) Return $filename; else return FILE_ERROR_COPY_FAILED; } /** * Create a new folder. * @param string $newFolder specifiy the full path of the new folder. * @return boolean true if the new folder is created, false otherwise. */ function createFolder($newFolder) { mkdir ($newFolder, 0777); return chmod($newFolder, 0777); } /** * Escape the filenames, any non-word characters will be * replaced by an underscore. * @param string $filename the orginal filename * @return string the escaped safe filename */ function escape($filename) { Return preg_replace('/[^\w\._]/', '_', $filename); } /** * Delete a file. * @param string $file file to be deleted * @return boolean true if deleted, false otherwise. */ function delFile($file) { if(is_file($file)) Return unlink($file); else Return false; } /** * Delete folder(s), can delete recursively. * @param string $folder the folder to be deleted. * @param boolean $recursive if true, all files and sub-directories * are delete. If false, tries to delete the folder, can throw * error if the directory is not empty. * @return boolean true if deleted. */ function delFolder($folder, $recursive=false) { $deleted = true; if($recursive) { $d = dir($folder); while (false !== ($entry = $d->read())) { if ($entry != '.' && $entry != '..') { $obj = Files::fixPath($folder).$entry; //var_dump($obj); if (is_file($obj)) { $deleted &= Files::delFile($obj); } else if(is_dir($obj)) { $deleted &= Files::delFolder($obj, $recursive); } } } $d->close(); } //$folder= $folder.'/thumbs'; //var_dump($folder); if(is_dir($folder)) $deleted &= rmdir($folder); else $deleted &= false; Return $deleted; } /** * Append a / to the path if required. * @param string $path the path * @return string path with trailing / */ function fixPath($path) { //append a slash to the path if it doesn't exists. if(!(substr($path,-1) == '/')) $path .= '/'; Return $path; } /** * Concat two paths together. Basically $pathA+$pathB * @param string $pathA path one * @param string $pathB path two * @return string a trailing slash combinded path. */ function makePath($pathA, $pathB) { $pathA = Files::fixPath($pathA); if(substr($pathB,0,1)=='/') $pathB = substr($pathB,1); Return Files::fixPath($pathA.$pathB); } /** * Similar to makePath, but the second parameter * is not only a path, it may contain say a file ending. * @param string $pathA the leading path * @param string $pathB the ending path with file * @return string combined file path. */ function makeFile($pathA, $pathB) { $pathA = Files::fixPath($pathA); if(substr($pathB,0,1)=='/') $pathB = substr($pathB,1); Return $pathA.$pathB; } /** * Format the file size, limits to Mb. * @param int $size the raw filesize * @return string formated file size. */ function formatSize($size) { if($size < 1024) return $size.' bytes'; else if($size >= 1024 && $size < 1024*1024) return sprintf('%01.2f',$size/1024.0).' Kb'; else return sprintf('%01.2f',$size/(1024.0*1024)).' Mb'; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -