如何使用js读取本地文件并将内容展示到页面

首先说方法,利用js中fileReader对象读取文件

1.首先创建fileReader对象
2. fileReader对象 读取不同文件调用的方法不同 所以要创建正则判断读取文件类型
3.直接上代码(js部分代码)

	var reg=/(.csv|.txt)$/m
			var reg2=/(.mp4)$/m
			var reg3=/(.jp[e]?g|.png)$/m
			var reg4=/(.mp3)$/m
			
			const input = document.querySelector('input[type=file]')
			
			  input.addEventListener('change', (event)=>{
				  
			    const reader = new FileReader()
				var file= event.target.files[0];
				console.log(file.name)
				
				
				//如果读取文本文件类型需要使用file对象中的readAsText方法 并设置文字类型为utf-8类型
				//如果读取图片,视频音频这种流体文件 需要调用file对象的readAsDataURL 该方法会将内容转换为base64类型 而标签的src会解析base64和blob格式的数据 所以如果为base64或者blob格式得数据直接赋值给标签的src就可以预览到效果 
				
				if(	reg.test(file.name)){
					reader.readAsText(input.files[0],'utf8') //可以读取.csv和.txt文件,.xlsx格式得文件不能读取为文本数据,因为.xlsx格式得文件不能保存为utf-8编码得文件。所以要读取.xlsx格式得文件只能通过读取为base64格式得数据或者arraybuffer格式得数据
				}
				if(reg2.test(file.name)||reg3.test(file.name)||reg4.test(file.name)){
					reader.readAsDataURL(input.files[0]) 
				}
				
				/*
				fileReader对象还有以下两种读取文件的方式
				fileReader对象.readAsArrayBuffer(文件对象) 将该文件读取为arraybuffer类型的数据
				fileReader对象.readAsBinaryString(文件对象) 将该文件读取为二进制类型的数据
				*/
				
				// input.files[0]拿到文件
				//reader.onload是fileReader对象读取文件结束时的回调函数 这个回调函数会有一个参数 
				//该参数的target下的result中保存了fileReader对象读取文件后的结果
				
			    reader.onload = (event)=>{
					
					if(	reg.test(file.name)){
						 document.body.innerHTML += event.target.result  // reader.result为获取结果
						   console.log(event.target.result)
					}
					if(reg2.test(file.name)){
						document.getElementById('vedio').src=event.target.result
						  console.log(event.target.result)
					}
					
					if(reg3.test(file.name)){
						document.getElementById('img').src=event.target.result
						  console.log(event.target.result)
					}
					if(reg4.test(file.name)){
					document.getElementById('audio').src=event.target.result
					  console.log(event.target.result)
				}
				
			    }
			  }, false)

4.整体代码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值