<?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;
}
?>
共同学习,写下你的评论
评论加载中...
作者其他优质文章