經過js通常方法實現,由於ie7/8都不能直接顯示本地圖片,因此能夠用div的濾鏡效果實現相似效果:html
function changePic(filePicker) { var oFileChecker=document.getElementById("pic"); oFileChecker.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = filePicker.value; var img=new Image(); img.src=filePicker.value; var limit = 400 * 1024; if (img.complete) { return; } img.onload = function () { if (img.fileSize> limit) { img=new Image(); alert("超過400K了,傳不上去的,你得換個圖片"); } }; }
頁面代碼:jquery
<div id="pic" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);width: 120px;height: 100px;border: 1px black solid;"></div> <input type="file" name="pctVirgin" onchange="changePic(this)" />
這樣在選擇圖片後就可在div處顯示圖片佈局
可是,這種方式有幾個問題:this
1.代碼太麻煩,通用性不強,即使是將其抽取到方法中代碼量也很多code
2.第一次選擇大小超大的圖片,能夠正常顯示,可是第二次選擇這個圖片就不能正常顯示提示了orm
因此作出了基於jquery的圖片預覽方法,這個再也不用div的濾鏡實現,而用img:htm
/** * 檢查上傳圖片併產生預覽 * @param fileId 文本域ID * @param imgId 預覽圖片ID * @param maxSize 圖片最大值 * @return */ function checkImage(fileId,imgId,maxSize){ var flag = false; var $file = $("#"+fileId); var $img = $("#"+imgId); //var filePareHtml = $file.parent().html(); $img.attr("src","file:///"+$file.val()); var img = new Image(); img.src = $file.val(); img.onload = function (){ if(img.fileSize < maxSize){ flag = true; } }; img.src = $file.val(); return flag; }
在頁面調用時可用img加上file標籤佈局,將二者id傳入便可圖片