zoukankan      html  css  js  c++  java
  • js+ajax 上传多图片,并删除

    <div class="df mb20">
           <input type="text" readonly placeholder="请选择图片" class="form-control col-sm-6"> 
           <input type="text" style=" 100px;" readonly value="请选择图片" class="btn btn-default" >
           <input type="file" id="picture" name="cover" multiple class="btn btn-default" style=" 100px;height:35px;line-height:85px;position: absolute;right: 15px;z-index: 1;background: transparent;" />
           <input type="hidden" name="s_imgpath[]" id="s_imgpath" >
    </div>
    <div id="previewImg" style="display: flex;justify-content: flex-start;align-items: flex-start;"></div>
    <style>
           #previewImg div{margin-right: 10px;margin-bottom: 10px;}
           .hide{display: none !important;}
           #previewImg div{position: relative;}
           .show{width: 20px;height: 20px;background: #0275D8;border-radius: 50%;position:absolute;top: 0;right: 0;z-index: 99}
           .show::after{content: 'x';color: #fff;width:20px;text-align: center;position: absolute;top:0;left: 0;right: 0;bottom: 0;margin:0 auto;}
    </style>
    // 多张图片
        var arr=[]
        $('#picture').on('change', function(){
            var imgFiles = $(this)[0].files
            console.log("多张图片",imgFiles)
            var formData =  new FormData();
            for (i=0;i<imgFiles.length;i++){
                filePath = imgFiles[i].name;
                fileFormat = filePath.split('.')[1].toLowerCase()  
                if( !fileFormat.match(/png|jpg|jpeg/) ) {  
                    alert('上传错误,文件格式必须为:png/jpg/jpeg')
                    return   
                }
                formData.append('upfile', $(this)[0].files[i]); //添加图片信息的参数
                var preview = document.getElementById("previewImg")
                var div = document.createElement('div')
                var a = document.createElement('a')
                var img = document.createElement('img')
                $.ajax({
                    url: "/upload",
                    type: "post",
                    dataType: "json",
                    cache: false,
                    mimeType: "multipart/form-data",
                    data: formData,
                    processData: false,// 不处理数据
                    contentType: false, // 不设置内容类型
                    async:false,
                    success:function (result){
                        arr[i]=result
                        img.width = 150
                        img.src = arr[i]
                        preview.appendChild(div)
                        div.appendChild(a)
                        div.appendChild(img)
                        $('#s_imgpath').val(arr)
                        //这儿  把我返回的值, 插入到那个数组里面 s_imgpath[]
                    }
                });
            }
        })
        //控制"按钮"显示与隐藏
        $("#previewImg").off("mouseenter","div").on("mouseenter","div",function(){
            var that=this;
            var dom=$(that).children("a");
            dom.removeClass("hide");
            dom.addClass("show");
            //为点击事件解绑,防止重复执行
            dom.off("click");
            dom.on("click",function(){
                //删除当前图片
                dom.parent().remove();
                var imgsrc = dom.parent().children("img")[0].src   //当前图片src
                arr.removeByValue(imgsrc);             //从数组中移除当前图片
                $('#s_imgpath').val(arr)               //给input重新赋值
            });
        }).off("mouseleave","div").on("mouseleave","div",function(){
            var that=this;
            $(that).children("a").addClass("hide");
        })
        Array.prototype.removeByValue = function(val) {    //删除数组中元素
          for(var i=0; i<this.length; i++) {
            if(this[i] == val) {
              this.splice(i, 1);
              break;
            }
          }
        }
  • 相关阅读:
    rest framework 认证 权限 频率
    rest framework 视图,路由
    rest framework 序列化
    10.3 Vue 路由系统
    10.4 Vue 父子传值
    10.2 Vue 环境安装
    10.1 ES6 的新增特性以及简单语法
    Django 跨域请求处理
    20190827 On Java8 第十四章 流式编程
    20190825 On Java8 第十三章 函数式编程
  • 原文地址:https://www.cnblogs.com/yun101/p/12986388.html
Copyright © 2011-2022 走看看