13th day

今天是个好日子啊,学习了两个非常重要的知识点啊,分页和上传文件,不得不说这两个东西有点绕啊,需要慢慢理解消化!

依葫芦画瓢封装了一个上传文件分函数,分页基本上没有什么太大的问题了!

<?php
/**
 * 此文件用来封装一个上传文件的函数
 * @param array $file 上传的文件的信息(以为数组,包含5个元素)
 * @param array $allow 允许上传的文件类型
 * @param string &$error 引用传递,用来记录错误信息
 * @param string $path 文件上传的目录
 * @param int $maxsize 允许上传的文件的大小
 * @return mixed false/$newname 上传失败返回false,上传成功返回新文件名
 */

function upload($file,$allow,&$error,$path,$maxsize=1048576){
    // 1.先判断系统错误
    switch($file['error']){
        case 1:
            $error = "上传失败!超出了文件限制的大小!";
            return false;
        case 2:
            $error = "上传失败!超出了浏览器规定的文件大小!";
            return false;
        case 3:
            $error = "上传失败!文件上传不完整!";
            return false;
        case 4:
            $error = "上传失败!请选择要上传的文件!";
            return false;
        case 6:
        case 7:
            $error = "对不起,服务器繁忙,请稍后再试!";
            return false;
    }
    // 2.判断逻辑错误
    if($file['size'] > $maxsize){
        $error = "上传失败!文件太大!";
        return false;
    }
    if(!in_array($file['type'],$allow)){
        $error = "上传文件的类型不正确,正确的类型为:" . implode(',',$allow);
        return false;
    }
    // 3.移动临时文件到指定目录
    //获取新文件名
    $newname = randName($file['name']);
    $target = $path . '/' . $newname;
    $result = move_uploaded_file($file['tmp_name'],$target);
    if($result){
        return $newname;
    }else{
        $error = "发生未知错误,上传失败!";
        return false;
    }
}

/**
 * 此函数用来生成一个随机的文件名(当前的年月日时分秒+6位随机数字+后缀名)
 * @param string $filename 原文件名
 * @return string $newname 新文件名
 */
function randName($filename){
    // 1.生成文件名的时间部分
    $newname = date("YmdHis");
    // 2.加上随机产生的6位数
    $str = "0123456789";
    for($i=0;$i<6;++$i){
        $newname .= $str[mt_rand(0,strlen($str)-1)];
    }
    // 3.加上文件的后缀名
    $newname .= strrchr($filename,'.');
    return $newname;
}

 

posted @ 2017-01-12 23:00  panbee  阅读(136)  评论(0编辑  收藏  举报