本地预览的意思是,在选择图片以后先不上传到服务器,而是由一个<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