js实现即时预览功能

实现即时预览功能需要用到H5新增的 web api–FileReader

FileReader对象

H5提供了 FileReader 对象用于读取文件或数据。

FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。
其中File对象可以是来自用户在一个元素上选择文件后返回的 FileList 对象,也可以来自拖放操作生成的 DataTransfer 对象,
还可以是来自在一个HTMLCanvasElement上执行 mozGetAsFile() 方法后返回结果。
DataTransfer 对象用于保存拖动并放下(drag and drop)过程中的数据。它可以保存一项或多项数据,这些数据项可以是一种或者多种数据类型。
非特定于Firefox的非标准HTMLCanvasElement方法:
mozGetAsFile() 将返回一个基于内存的File对象,该对象表示画布中包含的图像。
此功能是非标准的,不要在面向Web的生产站点上使用它。

具体属性:

error: null		【错误信息】
onabort: null   【数据读取中断时触发】
onerror: null   【数据读取失败时触发】
onload: null    【数据读取成功时触发】
onloadend: ƒ ()   【数据读取完成时触发,无论是否成功】
onloadstart: null  【数据开始读取时触发】
onprogress: null   [数据读取过程中不断触发,可用于做进度条]
readyState: 0   【状态】
result: null    【初始化为null,读取数据后,该值为所获得的数据】

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		img{width: 300px;}
	</style>
</head>
<body>
	<form action="">
		<input type="file" id='filebtn' >
		<input type="submit">
	</form>
	<img src="" alt="">
	<script type="text/javascript">
		//初始化FileReader对象,用于读取用户选择的文件的数据
		var read = new FileReader();
		var filebtn = document.getElementById('filebtn');
		//当文件控件改变时触发
		filebtn.onchange = function () {
			//读取文件列表中的第一个文件
			//readASDateURL这个方法,可以读取一个file对象,并把数据以base64的格式填充到FileReader对象中的result属性中去。
			read.readAsDataURL(this.files[0]);
		}
		//FileReader提供了onloadend事件,来处理数据读取完成后该干些什么
		read.onloadend = function(){
			document.images[0].src = this.result;//将读取到的文件地址赋给第一个img标签
			console.log('读取完成')
		}
	</script>
</body>
</html>

控件有 files 属性 files 属性是一个filelist对象,是file对象的集合 可以通过
input.files[0] 拿到这个 file
对象,该对象仅包含了用户选择的文件的相关信息,如文件名,大小,类型,最后修改时间等,并不直接提供文件的数据。
可通过该属性限制上传文件的类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值