js实现本地上传图片预览

2020-07-02 11:18:17 浏览数 (2)

在做网站系统时经常会用到图片上传功能,用户往往希望能看到自己上传的图片的样子,有的人是采用将图片上传到服务器之后再回显到页面,这种方式在无形之中增加了服务器的运行压力,因为如果用户感觉不满意还会再次上传图片。为了减轻服务器压力,我们通过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("localImag");
		//必须设置初始大小
		localImagId.style.width = "150px";
		localImagId.style.height = "180px";
		//图片异常的捕捉,防止用户修改后缀来伪造图片
	try{
	localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
	localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
	}
	catch(e){
		alert("您上传的图片格式不正确,请重新选择!");
		return false;
	}
		imgObjPreview.style.display = 'none';
		document.selection.empty();
	}
		return true;
}

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

0 人点赞