js多选图片上传预览

显示效果
在这里插入图片描述
代码

  <style type="text/css">
        .div-a {
    
    
            float: left;
            padding-bottom: 10px;
        }

        .div-b {
    
    
            float: right;
            padding-bottom: 10px;
        }

        .uploader-pick {
    
    
            border: none;
            background: #458CDE;
            color: #fff;
        }
    </style>
    <div style="width: 95%; margin: 5px;">
        <div class="div-a">
            <input type="file" name="file" id="doc" multiple="multiple" onchange="setImagePreviews();" accept="image/*" />
        </div>
        <div class="div-b">
            <button class="uploader-pick">确认上传</button>
        </div>
    </div>
    <div style="margin: 5px; padding: 5px; overflow: auto; height: 83%; width: 95%; border: 2px solid #CCCCCC;">
        <span>图片预览区域</span>
        <div style="margin: 0px auto; width: auto; overflow: auto;">
            <div id="imgs" style="width: auto"></div>
        </div>
    </div>

    <script type="text/javascript">
        //下面用于多图片上传预览功能
        function setImagePreviews(avalue) {
    
    
            //获取选择图片的对象
            var docObj = document.getElementById("doc");
            //后期显示图片区域的对象
            var imgs = document.getElementById("imgs");
            imgs.innerHTML = "";
            //得到所有的图片文件
            var fileList = docObj.files;
            //循环遍历
            for (var i = 0; i < fileList.length; i++) {
    
    
                //动态添加html元素        
                imgs.innerHTML += "<div style='float:left;margin:5px' > <img id='img" + i + "'  /> </div>";
                //获取图片imgi的对象
                var imgObjPreview = document.getElementById("img" + i);

                if (docObj.files && docObj.files[i]) {
    
    
                    //火狐下,直接设img属性
                    imgObjPreview.style.display = 'block';
                    imgObjPreview.style.width = '180px';
                    imgObjPreview.style.height = '180px';
                    //imgObjPreview.src = docObj.files[0].getAsDataURL();
                    //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要以下方式
                    imgObjPreview.src = window.URL.createObjectURL(docObj.files[i]);   //获取上传图片文件的物理路径
                }
                else {
    
    
                    //IE下,使用滤镜
                    docObj.select();
                    var imgSrc = document.selection.createRange().text;
                    //alert(imgSrc)
                    var localImagId = document.getElementById("img" + i);
                    //必须设置初始大小
                    localImagId.style.width = "180px";
                    localImagId.style.height = "180px";
                    //图片异常的捕捉,防止用户修改后缀来伪造图片
                    try {
    
    
                        localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
                        localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
                    }
                    catch (e) {
    
    
                        alert("您上传的图片格式不正确,请重新选择!");
                        return false;
                    }
                    imgObjPreview.style.display = 'none';
                    document.selection.empty();
                }
            }
            return true;
        }

    </script>

参考https://www.cnblogs.com/xielong/p/6279465.html

猜你喜欢

转载自blog.csdn.net/q1923408717/article/details/114629754
今日推荐