zoukankan      html  css  js  c++  java
  • 头像文件上传 方法一:from表单 方法二:ajax

    方法一:from表单

    html

    设置form表单,内包含头像预览div,内包含上传文件input

    设置iframe用来调用函数传参路径

            <!--表单提交成功后不跳转处理页面,而是将处理数据返回给iframe框架,用target属性,属性值为框架的name-->
            <form id="form1" action="chuli.php" method="post" enctype="multipart/form-data" target="sc">
                <!--头像显示位置-->
                <div id="show">
                    <!--删除了提交按钮,设置当路径改变时执行表单提交,脚本语句可以直接写在函数后-->
                    <!--文件上传设为透明,充满整个div,使得点击头像框时可以执行浏览图片-->
                    <input type="file" id="file" name="file"  onchange="$('#form1').submit();"/>
                </div>
            </form>
            
            <!--框架-->
            <iframe id="sc" name="sc"></iframe>

    js

        function showImage(path){
            $('#show').css('background-image','url('+path+')');
        }
        //onchange后面的调用函数
    //    function aa(){
    //        $('#form1').submit();
    //    }

    php

        //文件名
        $name = $_FILES['file']['name'];
        //文件类型
        $type = $_FILES['file']['type'];
        //临时路径
        $tmp_name = $_FILES['file']['tmp_name'];
        //错误代码
        $error = $_FILES['file']['error'];
        //文件大小
        $size = $_FILES['file']['size'];
        //如果文件名不为空则向下判断
        if(!empty($name)){
            //如果错误等于0 则没有错误,往下判断
            if($error == 0){
                //文件类型为图片时
                if($type == 'image/png'){
                    //文件大小小于100000b
                    if($size <=100000){
                        //如果不存在文件夹upfile
                        if(!is_dir("./image/")){
                            //创建文件夹upfile
                            mkdir("./image/");
                        }
                        //定义时间戳
                        $time = time();
                        //文件路径设置为
                        $path = "./image/".$time.$name;
                        //如果文件移动成功
                        if(move_uploaded_file($tmp_name,$path)){
                            //返回给页面的数据
                            //因为iframe为页面的子元素,所以.parent为页面,.showImage为其中的函数,$path为传参路径
                            echo "<script>window.parent.showImage('{$path}')</script>";
                        }else{
                            echo'上传失败';
                        }
                    //否则则输出文件过大
                    }else{
                        echo'文件过大';
                    }
                //若不是图片则输出格式不对
                }else{
                    echo'文件格式不对';
                }
            //错误代号,输出各种错误意思。
            }else{
                switch($error){
                    case '1':
                        echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
                    break;
                    case '2':
                        echo '传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。';
                    break;
                    case '3':
                        echo '文件只有部分被上传';
                    break;
                    case '4':
                        echo '没有文件被上传';
                    break;
                    
                }
            }
        //文件名为空,则输出文件为空
        }else{
            echo '文件为空';
        }

    方法二:ajax

    html

            <!--头像框,设置宽高,背景图,背景大小100%-->
            <div id="showing">
                <!--上传文件,设置宽高100%,透明-->
                <input type="file" id="file" name="file" onchange="upload()" />
            </div>
            <!--<input type="button" value="上传" onclick="upload()" />-->

    js

        function upload(){
            //拿到文件名
            var path = $('#file').val(); 
            //如果文件名中的换行空格等,为空则提示要选择文件
            if($.trim(path) == ""){
                alert('请选择要选择的文件');
                return;
            }
            $.ajaxFileUpload({
                url:'chuli.php',
                type:'post',
                secureuri:false,//是否启用安全提交,默认false
                fileElementId:'file',//上传文件的id,name属性名
                dataType:'text',
                data:{},
                success:function(data){//console.log(data);
                    $('#showing').css('background-image','url('+data+')');
                }
            });
        }

    php与上面相同,只是返回值只为文件路径。

        $name = $_FILES['file']['name'];
        $type = $_FILES['file']['type'];
        $tmp_name = $_FILES['file']['tmp_name'];
        $error = $_FILES['file']['error'];
        $size = $_FILES['file']['size'];
        if(!empty($name)){
            if($error == 0){
                if($type == 'image/png'){
                    if($size <=100000){
                        if(!is_dir("./image/")){
                            mkdir("./image/");
                        }
                        $time = time();
                        $path = "./image/".$time.$name;
                        if(move_uploaded_file($tmp_name,$path)){
                            echo $path;
                        }else{
                            echo'上传失败';
                        }
                    }
                }
            }
        }

    trim() 函数移除字符串两侧的空白字符或其他预定义字符。

    • "" - NULL
    • " " - 制表符
    • " " - 换行
    • "x0B" - 垂直制表符
    • " " - 回车
    • " " - 空格
  • 相关阅读:
    git 常用命令
    flask汇总
    flask自定义转换器
    css,js,jquery的载入方式和属性控制
    python import xx和from xx import x 中的坑
    CPython中的GIL
    python装饰器的参数传递
    python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)
    python 闭包
    Java数据类型和对象的引用
  • 原文地址:https://www.cnblogs.com/SSs1995/p/9239681.html
Copyright © 2011-2022 走看看