zoukankan      html  css  js  c++  java
  • PHP文件上传

    目录

      1.文件上传变量

      2.将服务器上的临时文件移动到指定目录下

      3.php.ini上传相关配置

      4.error错误号

      5.单文件上传实例

     

     

    1.文件上传变量

    //$_FILES:文件上传变量
        #name 文件的名称
        #type 文件的类型
        #tmp_name 临时文件名
        #size 文件的大小
        #error 错误信息
    
    $filename = $_FILES["myFile"]["name"];
    $type = $_FILES["myFile"]["type"];
    $tmp_name = $_FILES["myFile"]["tmp_name"];
    $size = $_FILES["myFile"]["size"];
    $error = $_FILES["myFile"]["error"];

    2.将服务器上的临时文件移动到指定目录下

    //1.move_uploaded_file($tmp_name,$destination):将服务器上的临时文件移动到指定目录下
        #上传后文件名字,移动成功返回true,否则返回false
    move_uploaded_file($tmp_name,"D:/".$filename);
    
    //2.copy($tmp_name,$destination)
    copy($tmp_name,"D:/".$filename);

    3.php.ini上传相关配置

    # file_uploads=On 支持HTTP上传
        # upload_tmp_dir="" 临时文件保存的目录
        # upload_max_filesize=2M 允许上传文件的最大值
        # max_file_uploads=20 允许一次上传的最大文件数
        # post_max_size=8M post方式发送数据的最大值
    
        # max_execution_time = 1 设置了脚本被解析器终止之前允许的最大执行时间,单位为秒,防止程序写的不好而占尽服务器资源
        # max_input_time = 60 脚本解析输入数据允许的最大时间,单位为秒
        # max_input_nesting_level = 64 设置输入变量的嵌套深度
        # max_input_vars = 1000 接受多少输入的变量
        # memory_limit = 128M 最大单线程的独立内存使用量

    4.error错误号

        # 0,没有错误发生,文件上传成功。
        # 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
        # 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
        # 3,文件只有部分被上传。
        # 4,没有文件被上传。
        # 6,找不到临时文件夹。
        # 7,文件写入失败。
        # 8,上传的文件被PHP扩展程序中断

    5.单文件上传实例

    form.html

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
    <form action="fileUpload.php" method="post" enctype="multipart/form-data">
        请选择你要上传的文件:
        <input type="file" name="myFile"><br>
        <input type="submit" value="上传文件">
    
        <!--限制客户端上传文件的最大值 隐藏域另起一行-->
        <!--<input type="hidden" name="MAX_FILE_SIZE" value="字节数">-->
    
        <!--accept设置上传文件的类型-->
        <!--<input type="file" name="myfile" accept="image/jpg,image/png,image/gif">-->
    </form>
    </body>
    </html>
    fileUpload.php
    header("content-type:text/html;charset:utf-8");
    $fileInfo = $_FILES["myFile"];
    
    $filename = $fileInfo["name"];
    $type = $fileInfo["type"];
    $error = $fileInfo["error"];
    $size = $fileInfo["size"];
    $tmp_name = $fileInfo["tmp_name"];
    $maxSize=2*1024*1024;//允许的最大值
    $allowExt=array("jpeg","jpg","gif");
    $flag = true;//检测是否为真实的图片类型
    
    //判断错误号
    if($error == 0){
        //判断上传文件的大小
        if($size>$maxSize){
            exit("上传文件过大");
        }
        
        //检测文件类型
        //取出文件扩展名
        $ext = pathinfo($filename,PATHINFO_EXTENSION);
        if(!in_array($ext,$allowExt)){
            exit("非法文件类型");
        }
    
        //检测是否为真实的图片类型
        if($flag){
            if(@!getimagesize($tmp_name)){
                exit("不是正的图片类型");
            }
        }
    
        //创建目录
        $path = "D:/test/";
        if(!file_exists($path)){
            mkdir($path,0777,true);
            chmod($path,0777);
        }
    
        //确保文件名唯一,防止重名覆盖
        $uniName = md5(uniqid(microtime(true),true)).".".$ext;
        $destination = $path.$uniName;
        if(@move_uploaded_file($tmp_name,$destination)){
            echo "上传成功";
        }else{
            echo "上传失败";
        }
    }else{
        switch($error){
            case 1:
            case 2:
            case 3:
            case 4:
            case 6:
            case 7:
            case 8:
                echo "上传错误";
                break;
        }
    }
  • 相关阅读:
    项目结队开发---NABC分析(成员)
    梦断代码读后感(二)
    梦断代码读后感(一)
    首尾相连的循环数组求其子数组最大值
    子数组求和之大数溢出
    梦断代码读后感——终结
    软件工程结对开发——一维最大子数组求和溢出问题
    结对开发——求环形一维数组最大子数组的和
    结对开发——电梯调度问题需求分析
    软件工程——求二维数组所有子矩阵的和的最大值
  • 原文地址:https://www.cnblogs.com/Ryan344453696/p/5216823.html
Copyright © 2011-2022 走看看