美文网首页
表单传值&文件上传

表单传值&文件上传

作者: 始于原子 | 来源:发表于2018-04-18 11:24 被阅读0次

    表单传值

    POST方式和GET方式的区别

    • GET方式会将传递的数据以明文方式显示在地址栏中,具有可见性,POST方式没有可见性。
    • 基于第一点,GET方式的安全性比POST方式稍微低一些。
    • 传输的数据量大小上,GET方式可能存在限制,POST方式不存在。(http协议本身并没有限制GET方式传输数据的数据量大小,之所以存在限制,是因为有可能被浏览器或服务器的配置所限制)(如果传输的数据量比较大,采用POST方式比较稳妥,这个是推荐的方式)
    • 在支持的数据类型,GET方式只支持ASICC码字符类型,POST方式无限制。

    PHP接收数据的方式

    $_POST $_GET $_REQUEST

    $_REQUEST的概念:包含$_GET、$_POST和$_COOKIE的数据

    提问:当$_POST和$_GET存在同名元素时,$_REQUEST将会选择使用哪个呢?

    答案:$_REQUEST选择使用哪个的值,取决于php.ini中一个名为request_order的配置项的配置!那个值在最右边代表使用哪种方式,默认是使用post

    文件上传

    实现思路:构建文件上传界面 -> 服务器接收(储存到系统临时目录中) -> 将文件从系统临时目录中转移到指定的目录

    <form action="index.html" method="post" enctype="multipart/form-data">
        <!-- 单图片上传 -->
        <input type="file" name="img" >
        <!-- 多图片上传 -->
        <input type="file" multiple="true" name="img[]" >
    </form>
    
    <?php
    move_uploaded_file($_FILES['img']['tmp_name'],'迁移目标的全路径')
    

    $file参数详解

    • name原文件名
    • type文件的格式类型
    • tmp_name文件上传到服务器存储的临时文件的全路径
    • error错误信息值
    • size原文件的大小
    错误码值 说明
    0 没有错误发生,文件上传成功
    1 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值
    2 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
    3 文件只有部分被上传
    4 没有文件被上传
    6 找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进
    7 文件写入失败。PHP 5.1.0 引进

    封装文件上传

    <?php
    function upFile($file){
        #处理系统级别的错误
        switch ( $file['error'] ):
            case 1:
                echo '文件大小超出了系统的限制!请重新上传';
            return false;
            case 2:
                echo '文件大小超出了浏览器的限制!请重新上传';
            return false;
            case 3:
                echo '文件没有上传完毕!请重新上传';
            return false;
            case 4:
                echo '您还没有选择上传的文件!';
            return false;
            case 6:
                case 7:
                echo '系统繁忙,请稍候再试!';
            return false;
        endswitch;
    
        #处理逻辑错误
        //检查文件的格式类型是否符合要求
        $limitType = array('image/png', 'image/jpeg', 'image/gif');
        if( !in_array($file['type'], $limitType) ){//如果不符合要求,则给出提示,中止继续执行
            echo '您上传的文件格式类型不符合要求,限制的文件格式为:'.implode(';', $limitType);
            return false;
        }
    
        //检查文件的大小是否符合要求
        $maxSize = 200 * 1024;//限制文件的最大值为200K
        if( $file['size']>$maxSize ){//如果上传文件的大小超过了限制的大小,则给出提示,中止继续执行
            echo '您上传的文件过大,请重新上传!';
            return false;
        }
    
        #构建绝对不重复的文件名
        $path = 'F:/home/class/day12/code/upload/';//文件的路径
        $name = uniqid('img_') . date('YmdHis') . mt_rand(0, 1000) . mt_rand(0, 1000) . strchr($file['name'], '.');//文件的新名字
        $wholeFileName = $path . $name;//新文件的全路径
    
        #转移临时文件
        if( move_uploaded_file($file['tmp_name'], $wholeFileName) ){//如果转移成功
            echo '恭喜你文件上传成功!';
            return true;
        }else{//否则转移失败
            echo '文件上传失败,请联系管理员!';
            return false;
        }
    }
    

    相关文章

      网友评论

          本文标题:表单传值&文件上传

          本文链接:https://www.haomeiwen.com/subject/qalvkftx.html