您的位置:首页 > 其它

本地图片上传前的预览

2008-12-22 14:01 274 查看
IE7和FF一样,都对本地文件做了一些限制,都不支持本地图片路径,所以本地预览好像已经没有其他办法可以实现了,但是使用滤镜也算是比较好的解决方案,也许会说这不符合标准,但是因为即使IE7支持了IE6的方案,FF一样不支持,所以现在改用滤境效果和原来是一样的,那就是只支持IE,不支持FF,至于标准,我感觉不必要拘束太多,既然已经无法做到兼容,那也只好找个变通的办法。

<!--以下均支持IE6和IE7,不支持Firefox2.0,其他浏览器未经测试-->

由于这些代码是直接从我自己的文件里直接摘出来的,里面可能有一些函数要从第一篇中加载。(例如最常用的获取对象的函数:getObject())

链接:一些常用的JS功能函数(一)

/*
IE6,IE7上传图片前预览图片
IE6下还可以同时检测图片的大小
size 单位为KB
<mce:style type="text/css"><!--

.newPreview
{
width:400px; height:300px;
FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)
}
.nodis{display:none;}
--></mce:style><style type="text/css" mce_bogus="1">
.newPreview
{
width:400px; height:300px;
FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)
}
.nodis{display:none;}</style>
<input type="file" name="litpic" onchange="PreviewImg(this,'newPreview','ndsPreview',400)" />
<div id="newPreview" class="newPreview"></div>
<img id="ndsPreview" class="nodis" />
*/
function PreviewImg(imgFile,newPreview,ndsPreview,size)
{
newPreview = getObject(newPreview);
if(!imgFile || !imgFile.value || !newPreview){return};
var patn = //.jpg$|/.jpeg$|/.gif$|/.png$|/.bmp$/i;
if(patn.test(imgFile.value))
{
try{newPreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;}catch(e){}
if(navigator.appVersion.indexOf("MSIE 6.0",0)>-1)
{
size=!size?0:size;
ndsPreview = getObject(ndsPreview);
if(ndsPreview)
{
try{ndsPreview.attachEvent("onreadystatechange", function(){checkImgSize(ndsPreview,size)})}catch(e){}
ndsPreview.src = imgFile.value;
}
}
}
else
{
alert("您选择的不是图像文件,请重新选择.");
}
}
function PreviewImgNow(imgDiv,imgFile)
{
try{getObject(imgDiv).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile}catch(e){}
}
//上传之前检测图片的大小
//条件是在file改变时要触发函数将缩略图显示在img上
//size 单位为KB
function checkImgSize(img,size)
{
img = getObject(img);
if(img.readyState == "complete")
{
var limit  = size * 1024;
if(img.fileSize > limit)
{
alert("出错!您上传的图片大小为"+(parseInt(img.fileSize/1024))+"KB,超过了"+size+"KB的限制,请重新上传");
return false
}else
return true;
}
return true;
}

//IE6 下缓存背景图片
if(CMInfo.Ie6)
{
document.execCommand("BackgroundImageCache", false, true);
}


<mce:style type="text/css"><!--

.newPreview
{
width:400px; height:300px;
FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)
}
.nodis{display:none;}
--></mce:style><style type="text/css" mce_bogus="1">
.newPreview
{
width:400px; height:300px;
FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)
}
.nodis{display:none;}</style>
<input type="file" name="litpic" onchange="PreviewImg(this,'newPreview','ndsPreview',400)" />
<div id="newPreview" class="newPreview"></div>
<img id="ndsPreview" class="nodis" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: