上传多张图片imgupload

                                                                <tr>
                                                                <td class="listtitle-up">尿素箱</td>
                                                                <td>
                                                                        <div class="comtainerimg upimg-div floatleft">
                                                                            <input type="hidden" value="" id="photo-4" name=""/>
                                                                </div>
                                                                <div class="z_photo  floatleft" >
                                                                    <section class="z_file fl">
                                                                        <img src="mrm/css/bigimg/a11.png" class="add-img">
                                                                        <input type="file" name="file" id="file4" class="file" value="" accept="image/jpg,image/jpeg,image/png,image/bmp,image/PNG" multiple style="opacity: 0"/>
                                                                    </section>
                                                             </div>
                                                              <a class="removelist" href="javascript:">
                                                                 <i class="fa fa-trash-o" ></i>
                                                             <a>
                                                                </td>
                                                            </tr>

 <aside class="mask works-mask" style="display: none;">
                                                        <div class="mask-content">
                                                            <h3>删除图片</h3>
                                                            <p class="del-p">您确定要删除吗?</p>
                                                            <p class="check-p"><span class="del-com wsdel-ok"><i class="glyphicon glyphicon-ok"></i> 确定</span><span class="wsdel-no"><i class="glyphicon glyphicon-remove"></i>取消</span></p>
                                                        </div>
                                                    </aside>

$(function(){
    var delParent;
    var defaults = {
        fileType         : ["jpg","png","bmp","jpeg","PNG"],   // 上传文件的类型
        fileSize         : 1024 * 1024 * 10                  // 上传文件的大小 10M
    };
        /*点击图片的文本框*/
     var j=0;
        $(document).on('change','.file',function(){
            
            var imgsrc= "";//声明图片的路径    
             var creatarry=new Array();
//    $(".file").change(function(){alert("1");
        var idFile = $(this).attr("id");
        var file = document.getElementById(idFile);
        var imgContainer = $(this).parents(".z_photo").siblings('.comtainerimg'); //存放图片的父亲元素
        var fileList = file.files; //获取的图片文件
        console.log(fileList+"======filelist=====");
        var input = $(this).parent();//文本框的父亲元素
        var imgArr = [];
        //遍历得到的图片文件
        var numUp = imgContainer.find(".up-section").length;
        var totalNum = numUp + fileList.length;  //总的数量
//        声明新input
        var newinput="<input type='file' name='file' id='newfile' class='file' value='' accept='image/jpg,image/jpeg,image/png,image/bmp,image/PNG' multiple style='opacity: 0'/>";
//        if(fileList.length > 5 || totalNum > 5 ){
//            alert("上传图片数目不可以超过5个,请重新选择");  //一次选择上传超过5个 或者是已经上传和这次上传的到的总数也不可以超过5个
//        }
//        else if(numUp < 5){
            fileList = validateUp(fileList);
            
            for(var i = 0;i<fileList.length;i++){
             var imgUrl = window.URL.createObjectURL(fileList[i]);
                 imgArr.push(imgUrl);
             var $section = $("<section class='up-section fl loading'>");
                 imgContainer.append($section);
             var $span = $("<span class='up-span'>");
                 $span.html(fileList[i].name).appendTo($section);
            
             var $img0 = $("<img class='close-upimg' src='/hvdm/r/mrm/css/bigimg/a7.png'>").on("click",function(event){
                    event.preventDefault();
                    event.stopPropagation();
                    $(".works-mask").show();
                    delParent = $(this).parent();
                });   
                $img0.appendTo($section);
             var $a = $("<a rel='lightbox-group'>");
                 $a.attr("href",imgArr[i]);
             var $img = $("<img class='up-img up-opcity'>");
                 $img.attr("src",imgArr[i]);
                 $img.appendTo($a);
                 $a.appendTo($section);
             var $p = $("<p class='img-name-p'>");
                 $p.html(fileList[i].name).appendTo($section);
             var $input = $("<input id='taglocation' name='taglocation' value='' type='hidden'>");
                 $input.appendTo($section);
             var $input2 = $("<input id='tags' name='tags' value='' type='hidden'/>");
                 $input2.appendTo($section);
             
//                 imgsrc+=imgArr[i]+",";//循环 累加href值
                 imgsrc+=imgArr[i];//循环 累加href值
                 creatarry.push(imgArr[i]);//将href各个 值存入到数组中
                 
           }
            var srcval=imgContainer.find("section").siblings('input').val();  //第二次点击添加图片 之前的href链接地址;
            if(srcval){//如果有地址 说明是第二次点击效果;
                var oldsrc=srcval.split(";");    //将之前存入的 链接 转为数组
                oldsrc.concat(creatarry);   //并拼接 现在上传点击的图片链接
                imgContainer.find("section").siblings('input').val(oldsrc.concat(creatarry).join(';'));//并赋给  input值
                setTimeout(function(){ //执行加载效果,结束事件
                     $(".up-section").removeClass("loading");
                      $(".up-img").removeClass("up-opcity");
                 },450);
//                 console.log($('.file').val());$('.file').val('');

                $(this).hide();
                console.log($(this).val());
                $(this).parents('.z_file').append("<input type='file' name='file' id='newfile" + j + "' class='file' value='' accept='image/jpg,image/jpeg,image/png,image/bmp,image/PNG' multiple style='opacity: 0'/>");
                j=j+1;
                return false;
            }
            imgContainer.find("section").siblings('input').val(creatarry.join(';')+";"+imgContainer.parents("tr").find(".listtitle-up").html());//给隐藏域追加所有href值
        if(srcval){alert("0");
                var newvalue=imgContainer.find("section").siblings('input').val(creatarry.join(';')+";"+imgContainer.parents("tr").find(".listtitle-up").html());
                alert("1");
                imgContainer.find("section").siblings('input').val(newvalue);
            }
//        }
        setTimeout(function(){
             $(".up-section").removeClass("loading");
              $(".up-img").removeClass("up-opcity");
         },450);
         numUp = imgContainer.find(".up-section").length;
        if(numUp >= 5){
//            $(this).parent().hide();
        }
        
        //input内容清空
//        $(this).val("");
        //限制字符个数
                $(".up-span").each(function() {
                    var maxwidth = 6;
                    if ($(this).text().length > maxwidth) {
                        $(this).text($(this).text().substring(0, maxwidth));
                        $(this).html($(this).html() + '...');
                    }
                });
                
                $(this).hide();
                console.log($(this).val());
                $(this).parents('.z_file').append("<input type='file' name='file' id='newfile" + j + "' class='file' value='' accept='image/jpg,image/jpeg,image/png,image/bmp,image/PNG' multiple style='opacity: 0'/>");
                j=j+1;
                console.log(j);
        
        
    });
    
    
   
    $(".z_photo").delegate(".close-upimg","click",function(){
           $(".works-mask").show();
           delParent = $(this).parent();
           imgsrcs=$(this).parents("section").siblings('input');
    });
        
    $(".wsdel-ok").click(function(){
        $(".works-mask").hide();
        var numUp = delParent.siblings().length;
//        var srcall=imgsrcs.val();
        if(numUp < 6){
            delParent.parent().find(".z_file").show();
        }
        var srcinput=delParent.siblings('input');//声明 被删除的  行中的隐藏input
        var srcall=delParent.siblings('input').val();//声明input的值
        var srcallarry=srcall.split(';');//将input的val值转为数组
        var thissrc=delParent.find('a').attr('href');   //查找要删除的图片链接值
         delParent.remove(); //移除 section 标签域
//         var nullarry=new Array();//声明空 数组
         for(var j=0;j<=srcallarry.length;j++){//循环 input中 的val值 ,除需要删除的链接值
             if(srcallarry[j]==thissrc){
                 srcallarry.splice(j,1);
                 j=j-1;
//                 nullarry.push(srcallarry[j]);//将除删除连接的值存入空数组
             }
         }
         srcinput.val(srcallarry.join(';'));//新数组的值 赋给input
         if(numUp==1){
             srcinput.val('');
         }
         
         
    });
    
    $(".wsdel-no").click(function(){
        $(".works-mask").hide();
    });
        
        function validateUp(files){
            var arrFiles = [];//替换的文件数组
            for(var i = 0, file; file = files[i]; i++){
                //获取文件上传的后缀名
                var newStr = file.name.split("").reverse().join("");
                if(newStr.split(".")[0] != null){
                        var type = newStr.split(".")[0].split("").reverse().join("");
                        console.log(type+"===type===");
                        if(jQuery.inArray(type, defaults.fileType) > -1){
                            // 类型符合,可以上传
                            if (file.size >= defaults.fileSize) {
                                alert(file.size);
                                alert('您这个"'+ file.name +'"文件大小过大');    
                            } else {
                                // 在这里需要判断当前所有文件中
                                arrFiles.push(file);    
                            }
                        }else{
                            alert('您这个"'+ file.name +'"上传类型不符合');    
                        }
                    }else{
                        alert('您这个"'+ file.name +'"没有类型, 无法识别');    
                    }
            }
            return arrFiles;
        }
        

    
    
    

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
})
View Code

 
原文地址:https://www.cnblogs.com/dazhangli/p/8268034.html