PHP 文件的相关操作

转换字节大小

/**
 * 转换字节大小
 * @param number $size
 * @return string
 */
function transByte($size,$dec=2)
{
//Byte,KB,MB,GB,TB,EB
    $arr=array(‘B‘,‘KB‘,‘MB‘,‘GB‘,‘TB‘,‘EB‘);
    $i=0;
    while($size>=1024){
        $size=$size/1024;
        $i++;
    }
    return round($size,$dec).$arr[$i];
}

创建文件

/**
 * 创建文件
 * @param string $filename
 * @return string
 */
function createFile($filename){
    //验证文件名的合法性,是否包含 /,*,<>,?,|
    $pattern=‘/[\*,\/,\*,<>,\?\|]/‘;
    if(!preg_match($pattern,basename($filename))){
        //检测当前目录下是否存在同名文件
        if(!file_exists($filename)){
            //通过touch($filename)来创建
            if(touch($filename)){
                return "文件创建成功";
            }else{
                return "文件创建失败";
            }
        }else{
            return "文件已存在,请重命名后创建";
        }
    }else{
        return "非法文件名";
    }
}

检测文件命名,是一个常用的方法,

function checkFilename($filename){
    $pattern=‘/[\*,\/,\*,<>,\?\|]/‘;
    if(preg_match($pattern,basename($filename))){
        return false;
    }else{
        return true;
    }
}

重命名文件

/**
 * 重命名文件
 * @param $oldname
 * @param $newname
 * @return string
 */
function renameFile($oldname,$newname){
    //验证文件名合法性
    if(checkFilename($newname)){
        //检测当前目录下是否存在同名文件
        $path=dirname($oldname);
        if(!file_exists($path.‘/‘.$newname)){
            //进行重命名
            if(rename($oldname,$path.‘/‘.$newname)){
                return "重命名成功";
            }else{
                return "重命名失败";
            }
        }else{
            return "存在同名文件,请重新命名";
        }
    }else{
        return "非法文件名";
    }
}

复制文件

/**
 * 复制文件
 * @param $filename
 * @param $dstname
 * @return string
 */
function copyFile($filename,$dstname){
    if(file_exists($dstname)){
        if(!file_exists($dstname.‘/‘.basename($filename))){
            if(copy($filename,$dstname.‘/‘.basename($filename))){
                $mes=‘文件复制成功‘;
            }else{
                $mes=‘文件复制失败‘;
            }
        }else{
            $mes=‘存在同名文件‘;
        }
    }else{
        $mes=‘目标目录不存在‘;
    }
    return $mes;
}

剪切文件

/**
 * 剪切文件
 * @param $filename
 * @param $dstname
 */
function cutFile($filename,$dstname){
    if(file_exists($dstname)){
        if(!file_exists($dstname.‘/‘.basename($filename))){
            if(rename($filename,$dstname.‘/‘.basename($filename))){
                $mes=‘文件剪切成功‘;
            }else{
                $mes=‘文件剪切失败‘;
            }
        }else{
            $mes=‘存在同名文件‘;
        }
    }else{
        $mes=‘目标目录不存在‘;
    }
}

删除文件

/**
 * 删除文件
 * @param $filename
 * @return string
 */
function delFile($filename){
    if(unlink($filename)){
        $mes=‘文件删除成功‘;
    }else{
        $mes=‘文件删除失败‘;
    }
    return $mes;
}

下载文件

/**
 * 下载文件
 * @param $filename
 */
function downFile($filename){
    header("content-disposition:attachment;filename=".basename($filename));
    header("content-length:".filesize($filename));
    readfile($filename);
}

上传文件,及多文件

/**
 * 构建文件上传信息
 * @return mixed
 */
function getFiles(){
    $i=0;
    foreach($_FILES as $file){
        if(is_string($file[‘name‘])){
            $files[$i]=$file;
            $i++;
        }elseif(is_array($file[‘name‘])){
            foreach($file[‘name‘] as $key=>$val){
                $files[$i][‘name‘]=$file[‘name‘][$key];
                $files[$i][‘type‘]=$file[‘type‘][$key];
                $files[$i][‘tmp_name‘]=$file[‘tmp_name‘][$key];
                $files[$i][‘error‘]=$file[‘error‘][$key];
                $files[$i][‘size‘]=$file[‘size‘][$key];
                $i++;
            }
        }
    }
    return $files;

}
/**
 * 针对单文件,多个单文件,多文件的上传
 * @param $fileInfo
 * @param string $path
 * @param array $allowExt
 * @param int $maxSize
 * @param bool|true $flag
 * @return array
 */
function uploadFile($fileInfo,$path=‘./uploads‘,$allowExt=array(‘jpg‘,‘png‘,‘gif‘,‘jpeg‘),$maxSize=10097152,$flag=true){
    $res=array();
    if($fileInfo[‘error‘]==UPLOAD_ERR_OK){
        //常用的集中检验方法
        if($fileInfo[‘size‘]>$maxSize){
            $res[‘mes‘]=$fileInfo[‘name‘].‘上传的文件过大‘;
        }
        $ext=strtolower(pathinfo($fileInfo[‘name‘],PATHINFO_EXTENSION));
        if(!in_array($ext,$allowExt)){
            $res[‘mes‘]=$fileInfo[‘name‘].‘上传的文件类型不符合‘;
        }
        //检测是否为图片
        if($flag){
            if(!getimagesize($fileInfo[‘tmp_name‘])){
                $res[‘mes‘]=$fileInfo[‘name‘].‘不是真实图片类型‘;
            }
        }
        if(!is_uploaded_file($fileInfo[‘tmp_name‘])){
            $res[‘mes‘]=$fileInfo[‘name‘].‘文件不是通过HTTP POST方式上传上来的‘;
        }
        if($res) return $res;
        //创建文件夹
        if(!file_exists($path)){
            mkdir($path,0777,true);
        }
        $uniName=substr(md5(uniqid(microtime(true),true)),0,5);
        $destination=$path.‘/‘.$uniName.‘.‘.$ext;
        if(!move_uploaded_file($fileInfo[‘tmp_name‘],$destination)){
            $res[‘mes‘]=‘文件移动失败‘;
        }
        $res[‘mes‘]=$fileInfo[‘name‘].‘上传成功‘;
        $res[‘destination‘]=$destination;
        return $res;
    }else{
        switch($fileInfo[‘error‘]){
            case 1:
                $res[‘mes‘]=‘上传文件超过了PHP配置文件中upload_max_filesize选项的值‘;
                break;
            case 2:
                $res[‘mes‘]=‘超过了表单MAX_FILE_SIZE设置的大小‘;
                break;
            case 3:
                $res[‘mes‘]=‘文件部分被上传‘;
                break;
            case 4:
                $res[‘mes‘]=‘没有选择上传文件‘;
                break;
            case 6:
                $res[‘mes‘]=‘没有找到临时目录‘;
                break;
            case 7:
            case 8:
                $res[‘mes‘]=‘系统错误‘;
                break;
        }
        return $res;
    }
}

调用时需要进行遍历:
$files=getFiles();foreach($files as $fileInfo){    $res=uploadFile($fileInfo,$path);    $mes=$res[‘mes‘].‘<br>‘;    alertMes($mes,$redirect);    @$uploadFiles[]=$res[‘destination‘];}$uploadFiles=array_values(array_filter($uploadFiles));print_r($uploadFiles);
				
时间: 2024-10-18 13:33:59

PHP 文件的相关操作的相关文章

关于C#资源文件的相关操作

关于资源文件的相关操作. //1.比较常见的有获取资源文件对应的文件流,然后转换到相对应的文件 //比较典型的做法是通过代码程序集加载指定资源 //如下通过Assembly的静态方法GetExecutingAssembly()得到程序集 //还有很多方式可以得到代码程序集 System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); Stream manifestResourceStream

文件的相关操作

文件的相关操作 有些时候,需要对文件进行重命名.删除等一些操作,python的os模块中都有这么功能 1. 文件重命名 os模块中的rename()可以完成对文件的重命名操作 rename(需要修改的文件名, 新的文件名) import os os.rename("毕业论文.txt", "毕业论文-最终版.txt") 2. 删除文件 os模块中的remove()可以完成对文件的删除操作 remove(待删除的文件名) import os os.remove(&quo

C语言(七)文件的相关操作

转载请标明出处: http://blog.csdn.net/u011974987/article/details/52354074 C语言文件的打开与关闭 在C语言中,文件操作都是由库函数来完成的,我们就来总结文件的相关的操作. 文件的打开(fopen函数) fopen() 函数用来打开一个文件,它的格式为: FILE *fopen(char *filename, char *type); filename为文件名(包括文件路径),type为打开方式,它们都是字符串.fopen() 会获取文件信

java对XML文件的相关操作(dom4j)

1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <Person university="SCAU" location="GuangZhou"> 4 <student> 5 <name>tester1</name> 6 </student> 7 <student> 8 <name/>teste

用 JSP 实现对文件的相关操作

前段时间一直忙着作业,实验,动手的时间真是少之又少,今天终于可以继续和大家分享关于 JSP 的学习心得. 简单总结一下吧: JSP 理论性很强,感觉就是纯语法. 我更偏向于实际编写代码,这样更容易理解高深的理论. 我不喜欢读死书,死读书,特别喜欢边看书,边敲代码,屡败屡战才是王道. 下面直接上干货吧,提供超详细代码及结果展示,欢迎大家与我交流! 如何建工程.文件我就不在这里多说了,相信大家都在前面的分享里学会了,我们直接进入本次学习成果的核心代码部分. 首先可以先放一个整体的界面,就像做一个目录

python字符串、list列表、字典、文件的相关操作

1.布尔类型 字符串 常用的操作方法 .count() .find() .join() .encode() .decode()#这个是bytes类型才有的 .endswith('.txt')#字符串是否以xx结尾 startswith('A')#字符串是否以xx开头 .isdigit() .strip() .replac('xx','') .split(',')#以xx来分割字符串,返回的是一个list .splitlines()#以换行符来分割字符串,返回的是一个list 2.list 列表

Xml文件的相关操作

Xml文档很久没有用过了,今天开开鲜,新手专区,不喜勿喷,运用的是WinForm编写 XMl文件的创建 /// <summary> /// 创建Xml文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCreateXml_Click(object send

html,图片上传预览,input file获取文件等相关操作

input file常用方法: var obj=document.getElementById("upimage"); var file=obj.files[0];//获取文件数据 var path=obj.value;//获取文件当前路径 var size=obj.files[0].size;//获取文件大小 var prefix=path.substring( path.lastIndexOf('\\')+1 );//获取文件名的前缀名(文件格式) var suffix=path.

Linux下文件权限相关操作

一 权限掩码umask umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1),同组的和其它用户有读写权限) 二 umask的作用 默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认 权限是755(7-0,7-2,7-2),可以用ls -l验证一下哦 现在应该知道