zoukankan      html  css  js  c++  java
  • jQuery上传文件显示进度条

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <script src="../js/jquery.js"></script>
    </head>
    
    <body>
    <h2>HTML5异步上传文件,带进度条(jQuery)</h2>
    <form method="post" enctype="multipart/form-data"><br/><br/>
        选择要上传的文件:<br/>
        <input type="file" name="file"/><span></span><br/>
        <!--<input type="file" name="file"/><span></span><br/>-->
    </form>
    
    <br/><br/>
    <input type="button" value="提交" onclick="upload()" id="sub"/>
    <br/><br/>
    上传进度:
    <progress></progress>
    <br/>
    <p id="progress">0 bytes</p>
    <p id="info"></p>
    </body>
    <script>
        var totalSize = 0;
        //绑定所有type=file的元素的onchange事件的处理函数
        $(':file').change(function () {
            var file = this.files[0]; //假设file标签没打开multiple属性,那么只取第一个文件就行了
            var name = file.name;
            var size = file.size;
            var type = file.type;
            url = window.URL.createObjectURL(file); //获取本地文件的url,如果是图片文件,可用于预览图片
            console.log(url);
            $(this).next().html("文件名:" + name + " 文件类型:" + type + " 文件大小:" + size + " url: " + url);
            totalSize += size;
            $("#info").html("总大小: " + totalSize + "bytes");
        });
    
    
        function upload() {
            //创建FormData对象,初始化为form表单中的数据。需要添加其他数据可使用formData.append("property", "value");
            var formData = new FormData($('form')[0]);
            //ajax异步上传
            $.ajax({
                url: "/getFile",
                method: "POST",
                data: formData,
                xhr: function () { //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数
                    var myXhr = $.ajaxSettings.xhr();
                    if (myXhr.upload) { //检查upload属性是否存在
                        //绑定progress事件的回调函数
                        myXhr.upload.addEventListener('progress', progressHandlingFunction, false);
                    }
                    return myXhr; //xhr对象返回给jQuery使用
                },
                success: function (result) {
                    $("#result").html(result.data);
                },
                contentType: false, //必须false才会自动加上正确的Content-Type
                processData: false  //必须false才会避开jQuery对 formdata 的默认处理
            });
        }
    
        //上传进度回调函数:
        function progressHandlingFunction(e) {
            if (e.lengthComputable) {
                $('progress').attr({value: e.loaded, max: e.total}); //更新数据到进度条
                var percent = e.loaded / e.total * 100;
                $('#progress').html(e.loaded + "/" + e.total + " bytes. " + percent.toFixed(2) + "%");
            }
        }
    </script>
    </html>

     结果:

  • 相关阅读:
    【和我一起学习Unity3D】Unity3D的坐标控制
    android开发利器--站在巨人肩膀上前行
    Ubuntu输入password登陆后又跳回到登录界面
    Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
    Android Home键监听
    Android 6.0 中TimePicker显示为滚动样式的方法
    Android Calendar的运用
    Android中Calendar类的用法总结
    Androlid入门之文件系统操作(三)文件读写
    Android入门之文件系统操作(二)文件操作相关指令
  • 原文地址:https://www.cnblogs.com/dzcici/p/9922517.html
Copyright © 2011-2022 走看看