欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > HTML >内容正文

HTML

fileReader学习-前端展示本地图片

发布时间:2024/1/8 HTML 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 fileReader学习-前端展示本地图片 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

最近项目中会使用富文本编辑器,发现源码中有fileReader,来学习一下~

FileReader的学习

FileReader是一种异步文件读取机制,结合input:file可以方便的读取本地文件(图片/txt)

一、input的file类型

<input type=“file” id = “inputBox”>

在页面上的显示是这样的:

当你点击选择文件的按钮,便可以选择本地的文件。选择后的页面如下所示,文字部分会显示你选择的文件名称。

我们在控制台试着输入 inputBox.files 将会看到:

为input标签加上webkitdirectory属性,可上传文件夹

<input type=“file” id = “inputBox” webkitdirectory>

例如:

我们可以看到,虽然file对象获取到了文件的描述信息,但没有办法获取到文件的数据。需要通过html5提供的FileReader读取文件中的数据。

fileReader

1.实例的创建 var reader = new FileReader();
2.FileReader的方法:
常用的两个方法在上图中圈出。我们来测试一下~
(1)readAsDataURL(file)

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><style>img{width:200px;}</style> </head> <body> <input type="file" name="" id="inputBox"> <br/> <img src="" id="img"> <span id="span"></span> <script language="javascript">//读取图片类型var inputBox = document.getElementById("inputBox");inputBox.addEventListener("change",function(){var reader = new FileReader();reader.readAsDataURL(inputBox.files[0]);//发起异步请求reader.onload = function(){img.src = this.result//读取完成后,数据保存在对象的result属性中console.log(this.result)}}) </script>

我们先看一下控制台打印出来的result是怎么样的

输出的是文件的base64编码
将这个结果赋给img.src,即可在页面中展示出本地图片了,效果如下

(2)readAsText(file,encoding)
其中,encoding的默认值为“UTF-8”。这个用法与上例类似

//读取txt类型var inputBox = document.getElementById("inputBox");inputBox.addEventListener("change",function(){var reader = new FileReader();reader.readAsText(inputBox.files[0]);//发起异步请求reader.onload = function(){var span = document.getElementById("span")span.append(this.result);//读取完成后,数据保存在对象的result属性中console.log(this.result)}})


3.FileReader的事件

var inputBox = document.getElementById("inputBox");var count=0;inputBox.addEventListener("change",function(){var reader = new FileReader();reader.readAsText(inputBox.files[0],"utf-8");//发起异步请求reader.onload = function(){console.log("加载成功")}reader.onloadstart = function(){console.log("开始加载")}reader.onloadend= function(){console.log("加载结束")}reader.onprogress = function(){count++;console.log("加载中"+count)}})

我们来读取一下一个比较大的文件 来看一下加载过程是怎么样的~

我们可以看到,事件的顺序为 onloadstart–>onprogress(周期性执行)–>onload–>onloadend(无论成功还是失败,都回调用)

总结

以上是生活随笔为你收集整理的fileReader学习-前端展示本地图片的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。