zoukankan      html  css  js  c++  java
  • 利用jquery,html5实现图片预览实时上传

    image          image
    html代码
    
    
        <div class="form-group">
             <label for="pic" class="col-md-1 control-label">小图:</label>
             <div class="col-md-4">
                 <input type="file" class="form-control" name="pic" />
                 <div class="progress"><span class="bgpro"></span></div>
                 <img src="" width="100px" style="display:none" class="pic_show"/>
             </div>
       </div>
    css代码
    
    .progress {
        width:100%;
        height:10px;
        border:1px solid #ccc;
        margin:3px 0;
    }
    .bgpro {
        display:block;
        width:1%;
        background:green;
        height:10px;
        color:#fff;
    }
    js代码
    
    <script type="text/javascript">
        $('input[name="pic"]').on('change',function() {
            if(typeof this.files == 'undefined'){
                return;
            }
            var img         = this.files[0];//获取图片信息
            var type         = img.type;//获取图片类型,判断使用
            var url         = getObjectURL(this.files[0]);//使用自定义函数,获取图片本地url
            var fd             = new FormData();//实例化表单,提交数据使用
            fd.append('img',img);//将img追加进去
            if(url)
                $('.pic_show').attr('src',url).show();//展示图片
            if(type.substr(0,5) != 'image'){//无效的类型过滤
                alert('非图片类型,无法上传!');
                return;
            }
            //开始ajax请求,后台用的tp
            $.ajax({
                type     : 'post',
                url     : '__URL__/upload_img',
                data     : fd,
                processData: false,  // tell jQuery not to process the data  ,这个是必须的,否则会报错
                            contentType: false,   // tell jQuery not to set contentType  
                dataType : 'text',
                xhr     : function() {//这个是重点,获取到原始的xhr对象,进而绑定upload.onprogress
                    var xhr     = jQuery.ajaxSettings.xhr();
                    xhr.upload.onprogress     = function(ev) {
                        //这边开始计算百分比
                        var parcent = 0;
                        if(ev.lengthComputable) {
                                            percent = 100 * ev.loaded / ev.total;
                                            percent = parseFloat(percent).toFixed(2);
                                        $('.bgpro').css('width',percent + '%').html(percent + '%');
                        }
                    };
                    return xhr;
                },
            });
            
        });
    
        //自定义获取图片路径函数
        function getObjectURL(file) {
            var url = null ; 
            if (window.createObjectURL!=undefined) { // basic
                url = window.createObjectURL(file) ;
            } else if (window.URL!=undefined) { // mozilla(firefox)
                url = window.URL.createObjectURL(file) ;
            } else if (window.webkitURL!=undefined) { // webkit or chrome
                url = window.webkitURL.createObjectURL(file) ;
            }
            return url ;
        }
    </script>

    还可以进一步美化,比如说穿错了,可以做个ajax删除,重新传,相比来说就很easy了

    获取到的数据:

    image

    参考网址:http://blog.csdn.net/a519640026/article/details/18090695

  • 相关阅读:
    leetcode — simplify-path
    leetcode — climbing-stairs
    leetcode — sqrtx
    leetcode — text-justification
    leetcode — add-binary
    leetcode — plus-one
    leetcode — valid-number
    leetcode — minimum-path-sum
    leetcode — unique-paths-ii
    四维偏序 CDQ套CDQ
  • 原文地址:https://www.cnblogs.com/lxdd/p/4070242.html
Copyright © 2011-2022 走看看