首先说方法,利用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.整体代码
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐