前段時(shí)間做了一個(gè)會(huì)員頭像上傳,能自動(dòng)生成多尺寸預(yù)覽效果,當(dāng)然如果你并不需要那么多尺寸的預(yù)覽效果就用一個(gè)預(yù)覽區(qū)即可。剛開始考慮采用ajax調(diào)用,但前臺(tái)數(shù)據(jù)需要點(diǎn)擊提交才能調(diào)用數(shù)據(jù)庫內(nèi)容,并不是同步預(yù)覽,這條路并不通,因此還是采用JS的方法。
JS部分
先引用公共JS庫,下面增加
<script type="text/javascript"> <!-- //下面用于圖片上傳預(yù)覽功能 function setImagePreview(avalue){ var docObj=document.getElementById("face");//上傳元素ID var imgObjPreview=document.getElementById("preview"); var imgObjPreview=document.getElementById("preview2"); var imgObjPreview=document.getElementById("preview3"); if(docObj.files &&docObj.files[0]) { //火狐下,直接設(shè)img屬性 imgObjPreview.style.display = 'block'; imgObjPreview.style.width = '150px'; imgObjPreview.style.height = '150px'; imgObjPreview2.style.display = 'block'; imgObjPreview2.style.width = '110px'; imgObjPreview2.style.height = '110px'; imgObjPreview3.style.display = 'block'; imgObjPreview3.style.width = '40px'; imgObjPreview3.style.height = '40px'; //imgObjPreview.src = docObj.files[0].getAsDataURL(); //火狐7以上版本不能用上面的getAsDataURL()方式獲取,需要以下方式 imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]); imgObjPreview2.src = window.URL.createObjectURL(docObj.files[0]); imgObjPreview3.src = window.URL.createObjectURL(docObj.files[0]); } else { //IE下,使用濾鏡 docObj.select(); var imgSrc = document.selection.createRange().text; var localImagId = document.getElementById("localImag"); var localImagId2 = document.getElementById("localImag2"); var localImagId3 = document.getElementById("localImag3"); //必須設(shè)置初始大小 localImagId.style.width = "150px"; localImagId.style.height = "150px"; localImagId2.style.width = "110px"; localImagId2.style.height = "110px"; localImagId3.style.width = "40px"; localImagId3.style.height = "40px"; //圖片異常的捕捉,防止用戶修改后綴來偽造圖片 try{ localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc; localImagId2.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; localImagId2.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc; localImagId3.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; localImagId3.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc; } catch(e){ alert("您上傳的圖片格式不正確,請(qǐng)重新選擇!"); return false; } imgObjPreview.style.display = 'none'; document.selection.empty(); imgObjPreview2.style.display = 'none'; document.selection.empty(); imgObjPreview3.style.display = 'none'; document.selection.empty(); } return true; } --> </script>
HTML部分
<p class="fieldbtn"> <input name="face" type="file" id="face" size="45" onchange="javascript:setImagePreview();"/> </p> <p id="localImag" > <img id="preview" src="images/view.png" width="150" height="150"/> <img id="preview2" src="images/view.png" width="110" height="110"/> <img id="preview3" src="images/view.png" width="40" height="40"/> </p>
上傳按鈕CSS樣式
系統(tǒng)默認(rèn)的上傳按鈕比較難看,分享案例的上傳按鈕樣式
<style type="text/css"> .fieldbtn{width:84px;height:28px;text-align:center;border:1px solid #ccc;position:relative;overflow:hidden;display:inline-block;cursor:pointer;} .fieldbtn input{font-size:100px;right:0;top:0;position:absolute;opacity:0;filter:alpha(opacity=0);cursor:pointer;z-index:999;} </style>