【Js应用实例】图片预览

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>图片预览</title>
</head>
<body>
	<!-- 
		文件上传在现代浏览器是基于FileReader API
		基于浏览器的安全策略,file标签在现在浏览器中已获取不到真实路径。而低版本ie可以获取到真实路径
		
		FileReader有四种读取文件的方式
			1.readAsBinaryString读取为二进制码
			2.readAsDataURL 读取为DataURL
			3.readAsText读取为文本
			4.readAsArrayBuffer 读取为队列缓存
		图片上传后的需求,需要将图片读取为DataURL,DataURL的固定格式,
		例如:data:[文件格式];base64,[文本流base64编码]
			1.jpg格式: data:image/jpeg;base64,/9j/4...
			2.png:data:image/png;base64,iVBORw...
			3.gif:data:image/gif;base64,R0IGOD...
	 -->
	 <input id="files" type="file" οnchange="previewImage(this,'prvid')",multiple="multiple"/>
	 <div id="prvid">预览容器</div>
</body>
<script type="text/javascript">
	function previewImage(file,prvid){
		/*
			file:file控件
			prvid:图片预览容器
		*/
		var tip = "Expect jpg or png or gif!";
		var filters = {
				"jpeg":"/9j/4",
				"gif":"R0IGOD",
				"png":"iVBORw"
		};
		var prvbox = document.getElementById(prvid);
		prvbox.innerHTML = "";
		//浏览器支持FileReader
		if(window.FileReader){
			for(var i=0,f;f=file.files[i];i++){
				var fr = new FileReader();
				fr.onload = function(e){
					var src = e.target.result;
					//验证没通过
					if(!validateImg(src)){
						alert(tip);
					}else{
					//验证通过
						showPrvImg(src);
					}
				};
				fr.readAsDataURL(f);
			}
		//浏览器不支持FileReader
		}else{
			if(!/\.jpg$|\.png$|\.gif$/i.test(file.value)){
				alert(tip);
			}else{
				showPrvImg(file.value);
			}
		}
		//验证图片
		function validateImg(data){
			var pos = data.indexOf(",")+1;
			for(var e in filters){
				if(data.indexOf(filters[e])===pos){
					return e;
				}
			}
			return null;
		}
		//展示图片
		function showPrvImg(src){
			var img = document.createElement("img");
			img.src = src;
			prvbox.appendChild(img);
		}
	}
</script>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值