zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    word-wrap与word-break为长单词换行
    background-origin与background-clip的“区别”
    box-shadow
    你不知道的border-radius
    当document.write 遇到外联script
    getAttribute()方法的第二个参数
    Backbone.js入门教程第二版笔记(3)
    Backbone.js入门教程第二版笔记(2)
    php中的字符串常用函数(二) substr() 截取字符串
    php中类和对象的操作
  • 原文地址:https://www.cnblogs.com/perseverancevictory/p/4279279.html
Copyright © 2011-2022 走看看