php文件操作

<?php

header('Content-type:text/html;charset=utf-8');



/**

 * [checkFilename 检验文件名的合法性]

 * @param  [string] $filename [文件名]

 * @return [bool]           [合法返回真]

 */

function checkFilename($filename){

$pattern='/[\/,\*,<>,\?\|]/';

if(preg_match($pattern, $filename)){

return false;

}else{

return true;

}


}


#文件夹操作


/**

*遍历目录函数,只读取目录中最外层的内容

* @param string $path

* @return array

*/

function readDirectory($path){

echo $path;

$arr=array();

$handle=opendir($path);

while (($item=readdir($handle))!==false) {//运用不全等于,防止文件名为0

if($item!='.'&&$item!='..'){

$p=$path.'/'.$item;

if(is_file($p)){

$arr['file'][]=$item;

}elseif(is_dir($p)){

$arr['dir'][]=$item;

}

}

}

closedir($handle);

return $arr;

}

/**

 * 得到文件夹的大小

 * @param  [string] $path文件夹的路径

 * @return [int] 返回文件夹的大小

 */

function getDirSize($path){

$sum=0;

$handle=opendir($path);

while (($item=readdir($handle))!==false) {

$p=$path.'/'.$item;

if($item!='.'&&$item!='..'){

if(is_file($p)){

global $sum;

$sum+=filesize($p);

}elseif(is_dir($p)){

$func=__FUNCTION__;

$func($p);

}

}

}

closedir($handle);

return $sum;

}

/**

 * 创建一个文件夹

 * @param  [string] 文件夹名

 * @return [string]          [创建成功返回对应的提示]

 */

function createFolder($dirname){

//检测文件夹名称的合法性

if(checkFilename(basename($dirname))){

//当前目录下是否存在同名文件夹名称

if(!file_exists($dirname)){

if(mkdir($dirname,0777,true)){//0777最大文件权限,true表示可以创建子目录

$mes='文件夹创建成功';

}else{

$mes='文件夹创建失败!';

}

}else{

$mes='存在同名文件夹';

}

}else{

$mes='非法文件夹名称';

}

return $mes;

}

/**

 * 重命名文件夹

 * @param  [string] $oldname [原文件夹名]

 * @param  [string] $newname [新文件夹名]

 * @return [string]          [返回对应的信息]

 */

function renameFolder($oldname,$newname){

if(checkFilename(basename($newname))){

//检测到当前目录下是否存在同名文件夹名称

if(!file_exists($newname)){

if(rename($oldname,$newname)){

$mes='重命名成功';

}else{

$mes='重命名失败';

}

}else{

$mes='存在同名文件夹';

}

}else{

$mes='非法文件夹名称';

}

return $mes;

}

/**

 * 复制文件夹

 * @param  [string] $srcdir [源文件夹名]

 * @param  [string] $dstdir [目标文件夹名]

 * @return [string]         [返回信息描述]

 */

function copyFolder($srcdir,$dstdir){

if(!file_exists($srcdir)){

return '原文件夹不存在';

}

if(!file_exists($dstdir)){

mkdir($dstdir,0777,true);

}

$handle=opendir($srcdir);

while(($item=readdir($handle))!=false){

if($item!='.'&&$item!='..'){

$sp=$srcdir.'/'.$item;

$dp=$dstdir.'/'.$item;

if(is_file($sp)){

copy($sp,$dp);

}elseif(is_dir($sp)){

$func=__FUNCTION__;

$func($sp,$dp);

}

}

}

closedir($handle);

return '复制成功';

}

/**

 * 剪切文件夹

 * @param  [string] $srcdir [源文件夹]

 * @param  [string] $dstdir [目标文件夹]

 * @return [string]         [返回剪切文件夹信息]

 */

function cutFolder($srcdir,$dstdir){

echo basename($srcdir);

echo $dstdir.'/'.basename($srcdir);

if(!file_exists($srcdir)){

$mes='源文件夹不存在';

}elseif(file_exists($dstdir)){

if(is_dir($dstdir)){

if(rename($srcdir,$dstdir.'/'.basename($srcdir))){

$mes='剪切成功';

}else{

$mes='剪切失败';

}

}else{

$mes='目标文件夹不是一个文件夹';

}

}else{

$mes='目标文件夹不存在';

}

return $mes;

}

/**

 * 删除目录

 * @param  [string] $path [要删除文件的路径]

 * @return [string]       [返回错误信息]

 */

function delFolder($path){

if(!($handle=opendir($path))){

return '要删除的文件不存在';

}else{

while(($item=readdir($handle))!==false){

if($item!='.'&&$item!='..'){

$p=$path.'/'.$item;

if(is_file($p)){

unlink($p);

}elseif(is_dir($p)){

$func=__FUNCTION__;

$func($p);

}

}

}

closedir($handle);

rmdir($path);

return '删除文件成功';

}

}



#文件操作


/**

 * 转换字节大小

 * @param  [number] $filesize [问价大小]

 * @return [string]           [返回带单位的文件大小]

 */

function transByte($filesize){

$arr=array('B','KB','MB','GB','TB','EB');

$i=0;

while ($filesize>=1024) {

$filesize/=1024;

$i++;

}

return round($filesize,2).$arr[$i];

}

/**

 * 创建文件

 * @param  [string] $filename [要创建的文件名]

 * @return [string]           [返回创建文件的信息]

 */

function createFile($filename){

if(!checkFilename($filename)){

return '文件名非法';

}elseif(file_exists($filename)){

return '文件已存在';

}elseif(!touch($filename)){//创建文件的函数

return '文件创建失败';

}

return '文件创建成功';

}

/**

 * [renameFile description]

 * @param  [string] $oldname [description]

 * @param  [string] $newname [description]

 * @return [string]          [description]

 */

function renameFile($oldname,$newname){

if(!file_exists($oldname)){

return '源文件不存在';

}elseif(checkFilename($newname)){

if(rename($oldname,$newname)){

return '重命名成功';

}else{

return '重命名文件失败';

}

}else{

return '目标文件名非法';

}

}

/**

 * 删除文件

 * @param  [string] $filename [要删除的文件名]

 * @return [type]           [返回文件删除信息]

 */

function delFile($filename){

if(unlink($filename)){

$mes='文件删除成功';

}else{

$mes='文件删除失败';

}

return $mes;

}

/**

 * 下载文件

 * @param  [string] $filename [要下载的文件名]

 * @return [type]           [description]

 */

function downFile($filename){

//content-disposition:attachment:内容配置:附件

header('content-disposition:attachment;filename='.basename($filename));

header('content-length:'.filesize($filename));

readfile($filename);

}

/**

 *复制文件

 * @param  [string] $srcfile [复制的源文件]

 * @param  [string] $dstfile [目标文件]

 * @return [string]          [返回对应的信息]

 */

function copyFile($srcfile,$dstfile){

if(!file_exists($srcfile)){

return '源文件不存在';

}

if(file_exists($dstfile)){

if(copy($srcfile,$dstfile.'/'.basename($srcfile))){

return '文件复制成功';

}else{

return '文件复制失败';

}

}else{

return '目标文件已存在';

}

}

/**

 * 剪切文件

 * @param  [string] $srcfile [源文件]

 * @param  [string] $dstfile [目标文件]

 * @return [string]          [返回对应的信息]

 */

function cutFile($srcfile,$dstfile){

if(!file_exists($srcfile)){

return '源文件不存在';

}

if(file_exists($dstfile)){

if(rename($srcfile,$dstfile.'/'.basename($srcfile))){

return '文件剪切成功';

}else{

return '文件剪切失败';

}

}else{

return '目标目录不存在';

}

}

/**

 * 表单文件上传

 * @param  [string]  $fileInfo [$_FILE中前台上传按钮对应的的一部分]

 * @param  [string]  $path     [文件要保存的目录]

 * @param  array   $allwoExt [允许上传的文件的后缀]

 * @param  integer $maxsize  [文件的大小的最大值]

 * @return [string]            [返回对应的错误信息]

 */

function uploadFile($fileInfo,$path,$allwoExt=array('gif','jpeg','jpg','png','txt'),$maxsize=10485760){

//判断错误符号

if($fileInfo['error']==UPLOAD_ERR_OK){//或为0

if(is_uploaded_file($fileInfo['tmp_name'])){

$ext=strtolower(pathInfo($fileInfo['name'],PATHINFO_EXTENSION));//获取文件后缀

$uniqid=uniqid();

$destnation=$path.'/'.pathinfo($fileInfo['name'],PATHINFO_FILENAME).'_'.$uniqid.'.'.$ext;

if(in_array($ext,$allwoExt)){

if($fileInfo['size']<=$maxsize){

if(move_uploaded_file($fileInfo['tmp_name'], $destnation)){

$mes='文件上传成功';

}else{

$mes='文件移动失败';

}

}else{

$mes='文件过大';

}

}else{

$mes='非法文件类型';

}

}else{

$mes='文件不是通过HTTP POST方式上传过来的';

}

}else{

switch ($fileInfo['error']) {

case 1:

$mes='超过了配置文件的大小';

break;

case 2:

$mes='超过了表单允许接收数据的大小';

break;

case 3:

$mes='文件被部分上传';

break;

case 4:

$mes='没有文件被上传';

break;

default:

$mes='出现未知错误';

break;

}

}

return $mes;

}

?>


你可能感兴趣的:(PHP,文件操作大全)