本地預覽的意思是,在選擇圖片以後先不上傳到服務器,而是由一個<img>
標籤來預覽本地的圖片,非 IE8/9 瀏覽器能夠從<input type=「file」/>
中獲取到圖片流,而後設置到<img src=「」>
進行顯示,但 IE8/9 瀏覽器只能獲取到本地圖片的絕對路徑,而且設置 src 是無效的。javascript
解決上面問題的方式是採用 css 圖片濾鏡,示例代碼:css
<!-- 要設置圖片預覽區域的大小 --> <p class="img-wrap"> <img name="prevPic" id="prevPic" src="" /> <input name="uploadImage" id="uploadImage" type="file" /> </p> <script type="text/javascript"> $('#uploadImage').change(function (e) { if (navigator.userAgent.indexOf('MSIE 8') >= 0 || navigator.userAgent.indexOf('MSIE 9') >= 0) { $(this).select(); window.parent.document.body.focus(); var realpath = document.selection.createRange().text; $(this).parent().css("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',src=\"" + realpath + "\",sizingMethod=scale)"); } else { var file = e.delegateTarget.files[0]; var reader = new FileReader(); var targetId = e.target.id; reader.readAsDataURL(file); reader.onload = function () { var picString = reader.result; $("#prevPic").attr({ "src": picString }).show(); }; } }); </script>
獲取realpath
是爲了解決發佈 IIS 以後,出現本地圖片路徑變成C:\fakepath\xxxx.jpg
的問題。html