图片上传预览是一种在图片上传之前对图片进行本地预览的技术。
使用户选择图片后能立即查看图片,而不需上传服务器,提高用户体验。
但随着浏览器安全性的提高,要实现图片上传预览也越来越困难。
不过群众的智慧是无限的,网上已经有很多变通或先进的方法来实现。
例如ie7/ie8的滤镜预览法,firefox 3的getAsDataURL方法。
但在opera、safari和chrome还是没有办法实现本地预览,只能通过后台来支持预览
代码如下 | 复制代码 |
<style type="text/css"> #newPreview { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale); } .style1 { width: 507px; } </style> </head> <div id="newPreview"></div> <asp:FileUpload ID="FileUpload1" onchange="PreviewImg(this)" runat="server" Width="408px" /> |
在 IE6 中,可以很方便地利用 img 的 src 属性,实现本地图片预览,然而在 IE7 中,这种办法却行不通
下面来一段兼容性比较强的代码
代码如下 | 复制代码 |
<script language="javascript"> var isIE = false; var isFF = false; var isSa = false; if((navigator.userAgent.indexOf("MSIE")>0) && (parseInt(navigator.appVersion) >=4))isIE = true; if(navigator.userAgent.indexOf("Firefox")>0)isFF = true; if(navigator.userAgent.indexOf("Safari")>0)isSa = true; function fileChange(obj) { if(isIE) { var url = obj.value; url = "file:///" + url.replace("\",'/'); } else if(isFF) { var url = obj.files.item(0).getAsDataURL(); } document.getElementById("ImageFile").src= url; } </script> <asp:FileUpload id=FileUpload1 onchange="fileChange(this);" runat="server"></asp:FileUpload><asp:Image id=ImageFile runat="server"></asp:Image> |
明明IE和火狐都正常的代码,这个小不点的chrome浏览器非要跳出来不兼容你的代码。请无视google吧。
firefox使用了getAsDataURL方法,而IE是用了滤镜。
代码如下 | 复制代码 |
<input type=file name="doc" id="doc" onchange="javascript:setImagePreview();"> <p> <div id="localImag"><img id="preview" width=-1 height=-1 style="diplay:none" /></div> </p> <script> |