移动端图片上传

HTML:

<div id="imgContainer" style="margin: 10px;">

           <div id="imgFiles" style="float:left;">

               <!-- 过滤掉所有非图片的文件 -->
                      <input name="" type="file" accept="image/*" onchange="showImg();" />
            </div>
</div>
 
CSS:
/* 图片化文件上传按钮 */
        #imgFiles {
            height:28vw;
             28vw;
            background:url(./image/upload.png) center no-repeat;
            background-size: contain;
            position:relative;
            margin-left:1vw;
        }
        #imgFiles input {
            height: 28vw;
             28vw;
            position:absolute;
            right:0;
            top:0;
            opacity: 0;
            filter:alpha(opacity=0);
            cursor:pointer;
        }
 
JS:
// 2.7 图片文件上传(imgFiles)
        function showImg() {
            // 判断,如果文件存在,则进行文件读取显示(防止点击取消按钮出现bug)
            if($("#imgFiles input")[0].files[0]) {
                imgFiles.push($("#imgFiles input")[0].files[0]);
                getImgsByFileReader(document.getElementById("imgContainer"), imgFiles);
            }
        }
        
        // 使用FileReader读取file实例并显示图片
        function getImgsByFileReader(el, files) {
            // 每次都是imgFiles的重新渲染,所以需要先把已渲染的清空
            $(el).find(".img").remove();
            // 循环渲染显示
            for (var i = 0; i < files.length; i++) {
                //父盒子
                let div = document.createElement("div");
                $(el).prepend(div);
                div.setAttribute("style","float:left;position:relative;margin-left:1vw;");
                div.setAttribute("data-name",files[i].name);
                div.setAttribute("class","img");
                //子盒子img
                let img = document.createElement('img')
                $(div).append(img);
                img.setAttribute('style', ' 26vw; height: 26vw; vertical-align: middle; margin: 2vw;')
                //子盒子span
                let span = document.createElement("span");
                let x = document.createTextNode("x");
                $(span).append(x);
                $(div).append(span);
                span.setAttribute("style","4vw;height:4vw;position:absolute;right:0vw;top:0vw;background:rgba(0,0,0,.2);border-radius:50%;text-align:center;line-height:4vw;color:#fff;");
                
                var reader = new FileReader()
                reader.onload = function(e) {
                    img.src = e.target.result
                }
                reader.readAsDataURL(files[i]) 
            }
            // 图片span点击删除
            $("#imgContainer span").click(function(){
                let name = $(this).parent().attr("data-name");
                let index = imgFiles.findIndex(function(item,index){
                    return item.name == name;
                })
                imgFiles.splice(index,1);
                $(this).parent().remove();
            })
        }
原文地址:https://www.cnblogs.com/yccg990118/p/11982878.html