php文件操作
admin
2023-07-02 03:42:50
0

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:p_w_upload:内容配置:附件

header('content-disposition:p_w_upload;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;

}

?>


相关内容

热门资讯

美国计划加速从欧洲撤军 【文/观察者网 王恺雯】德国《星期日世界报》(Welt am Sonntag)5月30日报道,五角大...
日本何时道歉?解放军代表当场质... 【环球时报-环球网报道 记者 郭媛丹 苏雅瑄】31日上午,解放军专家学者代表团成员、国防大学沈志雄大...
攻坚百年工程,港珠澳大桥工程总... 5月30日,是第十个全国科技工作者日。中央宣传部、中国科协于29日向全社会发布“最美科技工作者”。于...
一个因煤矿改变命运的村社:12... 极目新闻记者 张皓位于鄂尔多斯市伊金霍洛旗札萨克镇的乌兰陶勒盖村七社,是地处黄河“几字弯”腹地的一个...
华为徐直军“感谢”美国制裁:使... 感谢IT之家网友 的线索投递! 5 月 31 日消息,据钛媒体报道,华为副董事长、轮值董事长徐直军...
万向一二三申请高镍三元材料改性... 国家知识产权局信息显示,万向一二三股份公司申请一项名为“高镍三元材料改性方法和具有氮氧包覆层的高镍正...
滑坡发生前,社区书记多看一眼救... 5月27日傍晚,湖北恩施市舞阳坝街道官坡社区园艺场上空传来一声巨响,约6000立方米的土石倾泻而下,...
芬尼能源取得电器盒座及热泵专利... 国家知识产权局信息显示,广东芬尼能源技术有限公司取得一项名为“一种电器盒座及热泵”的专利,授权公告号...
数日前起火的广州长江(中国)轻... 5月31日上午,有网友发视频称,广州长江(中国)轻纺城北区发生火情。多名网友发布的视频显示,一栋印有...
原创 就... 看见中国神舟在太空顺利会师,印度又开始蠢蠢欲动了吗? 5月24日晚,中国神舟二十三号载人飞船在酒...