原生js实现上传图片并预览

1.FileReader对象简介

FileReader 的实例拥有 4 个方法,其中 3 个用以读取文件,另一个用来中断读取。下面的表格列出了这些方法以及他们的参数和功能,

方法名参数描述
abortnone中断读取
readAsBinaryStringfile将文件读取为二进制码
readAsDataURLfile将文件读取为 DataURL
readAsTextfile, [encoding]将文件读取为文本

readAsText:该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。
readAsBinaryString:该方法将文件读取为二进制字符串,通常发送给后端来存储
readAsDataURL:该方法是将文件转成base64格式的字符串
2. FileReader事件处理函数

事件描述
onabort中断时触发
onerror出错时触发
onload成功时触发
onloadend读取完成时触发,无论成功还是失败
onloadstart读取开始时触发
onprogress读取中

例子

html部分

<input type="file" onchange="changeFn()" class="fileArea" hidden >
<button class="btn"  name="nn" id="btnn">预览</button>
<button onclick="upload()">上传</button>

<div>
	<img src="" alt="图片预览" class="image" >
</div>

js部分

const file = document.querySelector('.fileArea')
function lookImg(){
	file.click()
}
let img
let res = null 
const whiteList = ['image/png','image/jpg','image/gif','image/jpeg']
function changeFn(){
	res = file.files[0]
	if (!res) return
	if (!whiteList.includes(res.type)) {
		return console.log('请选择图片类型');
	}
	let reader = new FileReader()
	reader.readAsDataURL(res)
	reader.onload = function(e){
		img = e.target.result 
		document.querySelector('.image').src = e.target.result
		file.value = null // 处理不能上传同一个图片
		}
	}
function upload(){
	if (!img) return console.log('停');
	// 发请求 ...
	console.log('成功');
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值