H5 FileReader 上传图片

废话不多说,直接上代码:


<body>
  <input type="file" name="file" class="fileBtn" onchange="showPreview(this)" onmouseover="showImg()" onmouseout="hideImg()"/>
  <span class="btn-text" id="pic">选择图片</span>
  <div class="view-box" id="viewBox">
    <img id="preview" width=300/>
  </div>
  <script type="text/javascript">
    function showPreview(source){
        var file = source.files[0];
        if(!file){
            alert('请先上传图片');
        }
        if (file.type == "image/jpeg" || file.type == "image/png") {
            if(window.FileReader){
                var fr = new FileReader();
                fr.onloadend = function(e){
                    var img = new Image();
                    img.src=e.target.result;
                    imgWidth = img.width;
                    imgHeight = img.height;
                    imgSize = file.size;
                    if(judgeImg(imgWidth,imgHeight,imgSize)){ //检测图片尺寸
                        document.getElementById('pic').innerHTML=file.name;  
                        document.getElementById('preview').src=e.target.result;
                        doUploadFile(file,imgWidth, imgHeight, imgSize)//与服务器交互
                    };
                }
                fr.readAsDataURL(file);
            }
        }else{
            alert('文件格式有误');
        }
    }
    function judgeImg(imgWidth,imgHeight,imgSize){
        if(imgWidth>1000){alert('这里对图片宽度进行限定');return;}
        if(imgHeight>1000){alert('这里对图片高度进行限定');return;}
        if(imgSize>500*1024){alert('这里对图片尺寸进行限定');return;}
        return true;
    }
    function doUploadFile(file,width, height, fileSize){
        var form = new FormData();
        form.append("fileName", file.name); // 可以增加表单数据
        form.append("fileSize", file.size); // 可以增加表单数据
        form.append("file", file);
        var req = new XMLHttpRequest();
        req.open("post", imgUrl);
        req.send(form);
        req.onreadystatechange = function () {
            if (req.readyState == 4 && req.status == 200) {
                var data = JSON.parse(req.responseText);
                if (data.errorCode == 0) {
                   //上传图片成功
                } else {
                   //上传图片失败
                }
            }
        };
    }
    function showImg(){
        if(document.getElementById('preview').src){
            document.getElementById('viewBox').style.opacity=1;
        }   
    }
    function hideImg(){
        document.getElementById('viewBox').style.opacity=0;
    }
  </script>
  <style>
    .fileBtn{
        opacity:0;
        position:relative;
        z-index:999;
        cursor:pointer }
    .btn-text{
        position:relative;
        color:green;
        left:-200px;
    }
    .view-box{
        width:300px;
        border:solid 3px #ccc;
        opacity:0;
    }

  </style>
 </body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值