PHP上传文件功代码练习

前端:

<html>
    <head><title>upload file</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    </head>
    <body>
        <form action="uploadtest.php" method="post" enctype="multipart/form-data">
            <!-- name必须是MAX_FILE_SIZE,value是字节数 -->
            <input type="hidden" name="MAX_FILE_SIZE" value="2097152"/>
            <!-- accept是文件的MIME类型 -->
            <input type="file" name="fileName" accept="image/jpeg,image/gif,image/png,application/x-MS-bmp,text/plain,text/html" />
            <input type="submit" value="上传文件"/>
        </form>
    </body>
</html>

 

 

上传文件的函数:

<?php
header(‘content-type:text/html;charset=utf-8‘);

function uploadFile($file,$uploadpath=‘upload‘,$extarray=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘,‘bmp‘],$max=2097152,$flag=false){

    //$file=@$_FILES[‘fileName‘];
    //var_dump($file);
    //$max=2097152; //加入到参数中,默认2M
    //由于客户端限制靠不住,所以也要在服务端进行限制。
    //限制文件的大小;
    if ($file[‘size‘]>$max) {

        exit(‘文件过大,不能上传。‘);
        # code...
    }


    if ($file[‘error‘]!==0) {

        switch($file[‘error‘]){
            case 1:
                $errmsg= "上传文件超过了php.ini中upload_max_filesize选项限制的值。";
                 break;
               
               case 2:
                   $errmsg=  "上传文件的大小超过了HTML表单中max_file_size选项指定的值。";
                   # code...
                   break;
               case 3:
                   $errmsg=  "文件只有部分被上传";
                   # code...
                   break;
               case 4:
                   $errmsg=  "没有文件被上传";
                   # code...
                   break;
               case 6:
                   $errmsg=  "找不到临时文件夹。";
                   # code...
                   break;
               case 7:
               case 8:
                   $errmsg=  "系统出错";
                   # code...
                   break;
        }

        exit($errmsg);
        # code...
    }else{
        //判断是否是通过HTTPPost上传
        if (!is_uploaded_file($file[‘tmp_name‘])) {

            exit(‘不是通过HTTP Post上传‘);
            # code...
        }

        //判断文件格式
        //也可以用 pathinfo($file[‘name‘],PATHINFO_EXTENSION);
        $ext=@strtolower(end(explode(‘.‘, $file[‘name‘])));
        //$extarray=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘,‘bmp‘];//加入到数组中,定制文件类型
        if (!in_array($ext, $extarray)) {

            exit(‘文件格式错误‘);
            # code...
        }

        //判断是否是真正的图片
        if($flag===true){
            if (@!getimagesize($file[‘tmp_name‘])) {

                exit(‘不是真正的图片‘);
                # code...
            }
        }
        //指定上传目录
        //$uploadpath=‘upload‘;//加入到参数中 默认值为‘upload‘

        //判断文件是否存在
        if (!file_exists($uploadpath)) {

            mkdir($uploadpath,0777,true);
            chmod($uploadpath, 0777);
            # code...
        }
        


        //确保每个上传的文件有唯一的名字
        $newname=md5(uniqid(microtime(true),true)).‘.‘.$ext;
        $pathname=$uploadpath.‘/‘.$newname;

        if (move_uploaded_file($file[‘tmp_name‘], $pathname)) {

            // exit(‘上传成功‘);
            // # code...
            return $pathname;
        }

    }

}

?>

 

使用函数:

<?php
include(‘upload.func.php‘);
$file=$_FILES[‘fileName‘];

$new=uploadFile($file,‘lijian‘,$extarray=[‘txt‘,‘html‘]);
echo $new;

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。