php_文件上传函数

<?php
    //封装文件上传函数:上传成功后返回新的文件名,错误返回错误提示
    //先定义一个函数
    /*
        function uploadFile(){
        //实现文件上传
    }
    */
    //1、确认函数参数
    /*
    *@param1 array $file (文件五要素,文件数组信息)
    *@param2 array $allow 文件允许类型(MIME)
    *@param3 string $error   用来记录错误信息
    *@param4 array $maxsize=1000000   默认允许大小
    *@param5 string $path 要上传文件的路径
    *@param6 return 成功返回新的文件名,失败返回false
    */

    function uploadFile($file,$allow,&$error,$path,$maxsize=1000000){
        //2、判断文件有效:有效的文件信息应该是具有5个元素的数组
        if(!$file || count($file)!=5 ){
            $error = '无效文件,不能上传';
            return false;
        }
        //3、判断文件类型
        if(!in_array($file['type'],$allow)){
            $allow_str = implode(',',$allow);
            $error="文件类型不合法,合法的文件类型有:$allow_str";
            return false; 
        }
        //4、判断系统错误:即需要上传文件$file['error']提示的信息 

        switch($file['error']){
            case 1:
                $error='';
                return false;
            case 2:
                $error='';
                return false';
                ......

        }

        //5、判断默认允许文件大小
        if($file['size']>$maxsize){
            $error = "文件太大,默认允许文件小于$maxsize";
            return false;
        }
        //6、产生新的文件名
        $filename=getRandomName($file['name']);
        
        //7、移动文件
        if(move_uploaded_file($file['tmp_name'],$path."/".$filename)){
            //成功,返回文件名$filename
            return $filename;            
        }else{
            //失败,返回false
            $error = '文件移动失败';
            return false;
        }        
    }

    //随机产生新的文件名的函数
    function getRandomName($filename){
        //获取当前时间
        $newname=date('YmdHis');
        //获取随机字符串
        $arr='abcdefghigklmnopqrstuvwxyz';
        for($i=0;$i<6;$i++){
            $newname.=$arr[mt_rand(0,strlen($arr)-1)];
        }
        //获取文件后缀
        $last = strrchr($filename,'.');
        $newname=$newname.$last;
        return $newname;
    }
    //调用函数代码
    //定义条件   
    //定义允许上传文件类型
    $allow = array('image/jpg','image/jpeg','image/png','image/gif');
    //定义文件移动路径
    $path='uploads';
    //允许上传文件大小
    $maxsize=1000000;
    //获取上传文件:文件要素数组信息
    $file=$_FILES['myfile'];
    //调用函数
    $filename = uploadFile($file,$allow,$error,$path,$maxsize);
    if($filename){
        echo $filename;
    }else{
        echo $error;
    }


转载于:https://my.oschina.net/u/2483876/blog/519280

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值