上传图片预览,看似一个很简单的一个功能,可以实现起来并不是想象的那么容易。其原因是各浏览器的支持和默认安全级别的差异。
先看一段代码吧
从表面上去,没有一点问题,把图片的本地路径给img标签的src就可是显示。
可是FF的安全性要求浏览器默认不能直接访问本地文件,显示不了了。
FF在上传文件这前一般会把相应的文件缓存,其实现方式是通过一个getAsDataURL函数来得到本地文件的路径
filesrc.files.item(0).getAsDataURL();
同样的IE7默认也不允许直接访问本地文件,怎么办,只能通过滤镜来实现了。
DXImageTransform.Microsoft.AlphaImageLoader
现在看来,上传图片预览得区分对待了,不但要区别不同的浏览器,还要区别浏览器的版本。
看实现代码
附DXImageTransform.Microsoft.AlphaImageLoader介绍---来自于博客在水一方
Microsoft.AlphaImageLoader 是IE滤镜 的一种,其主要作用就是对图片进行透明处理。虽然FireFox和IE7以上的IE浏览器已经支持透明的PNG图片,但是就IE5-IE6而言还是有一定的意义。
语法:
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=
bEnabled
, sizingMethod=
sSize
, src=
sURL
)
属性:
enabled | : | 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false
| |||||||||
sizingMethod | : | 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。
| |||||||||
src | : | 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。 |
特性:
Enabled | : | 可读写。布尔值(Boolean)。参阅 enabled 属性。 |
sizingMethod | : | 可读写。字符串(String)。参阅 sizingMethod 属性。 |
src | : | 可读写。字符串(String)。参阅 src 属性。 |