HTML5上传图片预览(不需通过服务器)

css:

    <style>
        #show div.item{
            margin-left: 10px;
            float: left;
            width: 200px;
            height: 200px;
            overflow: hidden;
        }
        #show img{
            height: auto;
        }
    </style>

html:

    <div class="upload_box">
            <input type="file" id="upimg" multiple>
    </div>
    <div class="show" id="show"></div>

javascript:

<script>
        var Upload = (function(){
            var upimg = document.getElementById('upimg');
            var show  = document.getElementById('show');
            var drag = document.getElementById('drag');

            function init(){
                if(!(window.FileReader && window.File && window.FileList && window.Blob)){
                    show.innerHTML = "您的浏览器不支持fileReader";
                    upimg.setAttribute('disabled', 'disabled');
                    return false;
                }
                handler();
            }

            function handler(){
                upimg.addEventListener("change",function(e){
                    var files = this.files;
                    if(files.length){
                        checkFile(files);
                    }
                });
                // 点击放大效果
                show.addEventListener('click', function(e){
                    var target = e.target;
                    if(target.tagName.toUpperCase() == "IMG"){
                        var parent = target.parentNode; //item
                        var big = parent.className.indexOf("big") >= 0;
                        if(!big){
                            // 点击放大
                            parent.style.cssText = 'width:'+target.naturalWidth+'px; height:'+target.naturalHeight+'px;'; // 关键
                            parent.className += ' big';
                        }else{
                            // 再点击缩小
                            parent.style.cssText = 'width:200px; height:200px;'; // 关键
                            parent.className = 'item';
                        }
                    }
                });
            }

            function checkFile(files){
                if(files.length != 0){
                    //获取文件并用FileReader进行读取
                    var html = "";
                    var i = 0;
                    var funcs = function(){
                        if(files[i]){
                            var reader = new FileReader();
                            if(!/image\/\w+/.test(files[i].type)){
                                show.innerHTML = "请选择图片类型";
                                return false;
                            }
                            reader.onload  = function(e){
                                html += '<div class="item"><img src="'+e.target.result+'" alt="img"></div>';
                                i++;
                                funcs();
                            }
                            reader.readAsDataURL(files[i]);
                        }else{
                             show.innerHTML += html;
                        }
                    }
                    funcs();
                }
            }

            return{
                init : init
            }
        })();

        window.onload = function(){
            Upload.init();
        }


    </script>

此方法只用于IE10+浏览器
实例下载http://pan.baidu.com/s/1c2iGBZy

如果需求为只能上传一张图片则可以改为

    <input type="file" id="upimg">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值