php 关于文件的一些封装好的函数

<?php 

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

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

/**
 * 重命名文件
 * @param string $oldname
 * @param string $newname
 * @return string
 */
function renameFile($oldname,$newname){
//    echo $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 string $filename
 * @return boolean
 */
function checkFilename($filename){
    $pattern = "/[\/,\*,<>,\?\|]/";
    if (preg_match ( $pattern,  $filename )) {
        return false;
    }else{
        return true;
    }
}

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

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

/**
 * 复制文件
 * @param string $filename
 * @param string $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;
}

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="目标目录不存在";
    }
    return $mes;
}

/**
 * 上传文件
 * @param array $fileInfo
 * @param string $path
 * @param array $allowExt
 * @param int $maxSize
 * @return string
 */
function uploadFile($fileInfo,$path,$allowExt=array("gif","jpeg","jpg","png","txt"),$maxSize=10485760){
    //判断错误号
    if($fileInfo[‘error‘]==UPLOAD_ERR_OK){
        //文件是否是通过HTTP POST方式上传上来的
        if(is_uploaded_file($fileInfo[‘tmp_name‘])){
            //上传文件的文件名,只允许上传jpeg|jpg、png、gif、txt的文件
            //$allowExt=array("gif","jpeg","jpg","png","txt");
            $ext=getExt($fileInfo[‘name‘]);
            $uniqid=getUniqidName();
            $destination=$path."/".pathinfo($fileInfo[‘name‘],PATHINFO_FILENAME)."_".$uniqid.".".$ext;
            if(in_array($ext,$allowExt)){
                if($fileInfo[‘size‘]<=$maxSize){
                    if(move_uploaded_file($fileInfo[‘tmp_name‘], $destination)){
                        $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;
        }
    }

    return $mes;

}
时间: 2024-08-09 10:44:20

php 关于文件的一些封装好的函数的相关文章

JavaScript封装Ajax工具函数及jQuery中的ajax

封装ajax工具函数 /** * ITCAST WEB * Created by zhousg on 2016/5/24. */ /* * 1. 请求的类型 type get post * 2. 请求地址 url * 3. 是异步的还是同步的 async false true * 4. 请求内容的格式 contentType * 5. 传输的数据 data json对象 * * 6.响应成功处理函数 success function * 7.响应失败的处理函数 error function *

Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据

当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调用就可以使用,方便快捷: 具体实现方便如下: 我们可以再三个地方设置公共的函数function.php (注意:function.php默认是不存在的,需手动创建) 根目录\Application\Common\Common\function.php(公共的函数,Home和Admin都可以调用) 根

JS_ECMA基本语法中的几种封装的小函数-2

大家好!今天继续给大家写一下ECMA中的剩下的小函数以及实用的实例: 首先先给大家说一下字符串.数组.数学方法以及json的一点小知识点: 字符串方法: str.length str.charAt(i):取字符串中的某一个; str.indexOf('e');找第一个出现的位置;找不到返回-1; str.lastIndexOf('e'):找最后一个e出现的位置;找不到返回-1; str.toUpperCase();转大写 str.toLowerCase();转小写 str.substring(起

JS_ECMA基本语法中的几种封装的小函数

先来回顾一下我们的字符串: 字符串方法: str.length str.charAt(i):取字符串中的某一个; str.indexOf('e');找第一个出现的位置;找不到返回-1; str.lastIndexOf('e'):找最后一个e出现的位置;找不到返回-1; str.toUpperCase();转大写 str.toLowerCase();转小写 str.substring(起始位置,结束位置):字符串截取; str.split('切割的方式');字符串切割;字符串转数组;数组方法:删除

Linux环境编程之文件I/O(五):fcntl函数

引言: 对于一个普通的文件,我们可以想到的对它的操作有,读取文件的内容.写数据到文件中,这些都是前面提到的read.write函数的作用.除此之外,还可以获取文件的其他性质,并对这些性质进行修改,比如文件的描述符.文件描述符标记.文件状态标志等等.这些对文件性质的修改就由fcntl函数完成. 函数介绍: #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd, ... /* arg */ ); 参数: fd:

AJAX编程-封装ajax工具函数

即 Asynchronous [e's??kr?n?s] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器进行通信. XMLHttpRequest可以以异步方式的处理程序,浏览器内建对象,用于在后台与服务器通信(交换数据) ,由此我们便可实现对网页的部分更新,而不是刷新整个页面. 封装ajax工具函数 $.ajax = function(options){ if(!options) return fal

【PHP】PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数)

[PHP]PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数) 前言 由于业务需要,我们需要从业务中汇总数据,并生成Excel文件. 思路是这样的 PHP要导出Excel表格文件->找一个好用的第三方库吧->在Composer的Packages里找一个吧->PHPExcel这么多收藏,就它了! PHPExcel 概述 PHPExcel is a library written in pure PHP and providing a set of classes th

JS封装cookie操作函数实例(设置、读取、删除)

本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 /*设置cookie*/ function setCookie(name, value, iDay) {   var oDate=new Date();   oDate.setDate(oDate.getDate()+iDay);   document.cook

PHP——封装数据库的函数(增,删,改)2014.5.15的总结

1:完整版的封装函数(增(insert),删(delete),改(update)) 例:<?php //编写数据库操作的封装函数 function mysql_bind(){ //首先我们不知道外面会传入多少个参数    //可以用func_get_args()方法来获取全部传入参数,这个方法返回全部参数的数组   //和func_get_args()方法相对应的其实还有一个func_num_args()来获取参数个数    $args = func_get_args();     //通过使用