js实现本地上传图片预览

在做网站系统时经常会用到图片上传功能,用户往往希望能看到自己上传的图片的样子,有的人是采用将图片上传到服务器之后再回显到页面,这种方式在无形之中增加了服务器的运行压力,因为如果用户感觉不满意还会再次上传图片。为了减轻服务器压力,我们通过js来实现本地图片上传预览功能,不经过服务器就实现预览效果。下面请看代码

代码语言:javascript
复制
<div id="localImag">
     <img id="preview" onmouseover="datu()" src="" width="150" height="180"
     style="display: block; width: 150px; height: 180px;">
</div>
<input type="file" name="file" id="doc" style="width:150px;" onchange="javascript:setImagePreview();">

上面这部分代码是页面上传按钮和显示图片的区域。接下来请看js控制代码

代码语言:javascript
复制
function setImagePreview(avalue) {
	var docObj=document.getElementById("doc");
	var imgObjPreview=document.getElementById("preview");
	if(docObj.files &&docObj.files[0]){
		//火狐下,直接设img属性
		imgObjPreview.style.display = 'block';
		imgObjPreview.style.width = '150px';
		imgObjPreview.style.height = '180px'; 
		//imgObjPreview.src = docObj.files[0].getAsDataURL();
	//火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式
	imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
}
else{
	//IE下,使用滤镜
	docObj.select();
	var imgSrc = document.selection.createRange().text;
	var localImagId = document.getElementById(&#34;localImag&#34;);
	//必须设置初始大小
	localImagId.style.width = &#34;150px&#34;;
	localImagId.style.height = &#34;180px&#34;;
	//图片异常的捕捉,防止用户修改后缀来伪造图片
try{
localImagId.style.filter=&#34;progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)&#34;;
localImagId.filters.item(&#34;DXImageTransform.Microsoft.AlphaImageLoader&#34;).src = imgSrc;
}
catch(e){
	alert(&#34;您上传的图片格式不正确,请重新选择!&#34;);
	return false;
}
	imgObjPreview.style.display = &#39;none&#39;;
	document.selection.empty();
}
	return true;

}

这样我们就实现了本地图片上传预览功能。