天天看點

H5移動端實作圖檔上傳

效果圖:

H5移動端實作圖檔上傳

Html代碼:

<div class="file-box clearboth" id="fileBox">
	 				<label class="clone-dom" style="display:none;">
	 					<input type="file" class="file-btn" name="img[]"/>
	 				</label> 
	 					<div class="review-box"></div> 
	 					<label><input type="file" class="file-btn clone-dom" name="img[]"/>
					</label> 
			 	</div> 
           

js代碼:

<script type="text/javascript">
			  //擷取檔案url
            function createObjectURL(blob){
                if (window.URL){
                    return window.URL.createObjectURL(blob);
                } else if (window.webkitURL){
                    return window.webkitURL.createObjectURL(blob);
                } else {
                    return null;
                }
            }

            var box = $("#fileBox .review-box");    //顯示圖檔box
            var file = $("#file"); //file對象
            var domFragment =  document.createDocumentFragment();   //文檔流優化多次改動dom

            $("#fileBox").on("click", ".file-btn",function(){
                var index = $(this).parent().index();
                if(index == 6){
                    alert("最多可以上傳4張圖檔!");
                    return false;
                }
            });
            //觸發選中檔案事件
            $("#fileBox").on("change", ".file-btn", function(event){
                var imgNum = parseInt($("#fileBox .review-box img").length);
                if(imgNum < 4){
                    var file = event.target.files;  //擷取選中的檔案對象
                    var imgTag = $("<img src=''/>");
                    var fileName = file[0].name;    //擷取目前檔案的檔案名
                    var url = createObjectURL(file[0]); //擷取目前檔案對象的URL
                    //忽略大小寫
                    var jpg = (fileName.indexOf(".jpg") > -1) || (fileName.toLowerCase().indexOf(".jpg") > -1);
                    var png = (fileName.indexOf(".png") > -1) || (fileName.toLowerCase().indexOf(".png") > -1);
                    var jpeg = (fileName.indexOf(".jpeg") > -1) || (fileName.toLowerCase().indexOf(".jpeg") > -1);
                    var jpeg = (fileName.indexOf(".gif") > -1) || (fileName.toLowerCase().indexOf(".gif") > -1);
					var jpeg = (fileName.indexOf(".bmp") > -1) || (fileName.toLowerCase().indexOf(".bmp") > -1);
                    //判斷檔案是否是圖檔類型
                    if(jpg || png || jpeg || gif || bmp){
                        imgTag.attr("src",url);
                    }else{
                        alert("請選擇合适的圖檔類型檔案!");
                    }

                    //最佳顯示
                    var imgbox = $("<div class='prev-item'><span class='closebtn'>×</span></div>");
                    imgbox.append(imgTag);
                    box.append(imgbox);
                    event.target.parentNode.style.display = "none";
                    var cloneDom = $(".clone-dom").eq(0).clone().removeAttr("style");
                    $("#fileBox").append(cloneDom);
                }
            });

            $(".review-box").on("click", ".prev-item", function(){
                var index = $(this).index();
                $(this).remove();
                $("#fileBox label:eq(" + (index + 1) + ")").remove();
            });
        </script>
           

CSS代碼:

#fileBox{
			margin:/*1*/rem 0;
		} 
		#fileBox label{
			border: 1px solid #ccc;
			display:block;
			float:left;
			height:60px;
			width:60px;
			background:url(../img/images/images/xiang1_06.png) no-repeat center;
			background-size: .19rem;
			background-color: #ccc;
			margin-left: .17rem;
			
		} 
		#fileBox .file-btn{
			height:50px;
			width:50px;
			margin:0 .5rem .5rem 0;opacity:0;
		} 
		#fileBox .review-box{
			display:block;
			float:left;
			margin-left: .17rem;
		} 
		#fileBox .review-box img{
			height:60px;
			width:60px;
			margin:0 .1rem .2rem 0;
		} 
		#fileBox .prev-item{
			position:relative;display:inline-block;
		} 
		#fileBox .prev-item .closebtn{
			position:absolute;
			right: -1px;
			top: -4px;
			display: block;
			height: 14px;
			width: 14px;
			color: #fff;
			font-size: 16px;
			line-height:14px;
			text-align: center;
			background: red;
			border-radius: 10px;
		}
		#fileBox .prev-item .closebtn {
			position: absolute;
			right: 7px; 
			top: -4px;
			display: block;
			height: 14px;
			width: 14px;
			color: #fff;
			font-size: 16px;
			line-height: 14px;
			text-align: center;
			background: #8E8E93;
			border-radius: 10px;
		}
           

别忘了引進jq檔案哦!!!