前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js实现本地上传图片预览

js实现本地上传图片预览

作者头像
OECOM
发布2020-07-02 11:18:17
8K0
发布2020-07-02 11:18:17
举报
文章被收录于专栏:OECOM

在做网站系统时经常会用到图片上传功能,用户往往希望能看到自己上传的图片的样子,有的人是采用将图片上传到服务器之后再回显到页面,这种方式在无形之中增加了服务器的运行压力,因为如果用户感觉不满意还会再次上传图片。为了减轻服务器压力,我们通过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;
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档