【前端】【H5 API】实现文件读取操作
H5 API 实现文件读取操作
该接口通过
FileReader对象来读取本地存储的文件,然后使用File对象来指定读取的文件或数据File对象
可以是来自用户在一个元素上(如<input>)选择文件后返回的
FileList对象,可以是自由拖放操作生成的
DataTransfer对象。(dataTransfer对象只能访问文件的一些基本的信息。)
文件的上传
由于Web环境的特殊性,为了考虑文件安全问题,浏览器不允许JavaSctipt直接访问文件系统,使用<input>表单元素的文件域\<input type="file">来实现文件的上传。
input元素还有一个multiple属性(HTML 5新增),可以实现一次上传多个文件。在用户选择文件以后,可以得到一个FileList对象,它代表所选的文件列表。
查看FileList对象
<input type="file" multiple>
<script>
var file = document.querySelector('input');
file.onchange = function() { // 当用户选择文件后执行此事件
console.log(this.files); // 查看FileList对象
};
</script>

FileList对象代表所选的文件列表,该对象是一个类数组的形式,其中包含一个或多个File对象。如果用户只选择了一个上传文件,那么只需要访问FileList对象的第一个元素,如果FileList对象是类数组对象,可以使用for循环遍历其内部的File对象
for(var i = 0, numFiles = files.length; i < numFiles; i++){
var files = files[i];
…
}
在使用
FileReader对象前,需要使用new来实例化FileReader()构造函数,获得一个对象。然后通过这个对象的方法和事件,来实现文件的读取等不同的功能。无论文件是否读取成功,读取文件的方法都不会返回读取的结果,而是将读取结果存储到result属性中。
FileReader对象的常用方法
| 方法名称 | 参数 | 描述 |
|---|---|---|
| readAsBinaryString | file | 将文件读取为二进制编码 |
| readAsText | file,[ending] | 将文件读取为文本 |
| readAsDataURL | file | 将文件读取为DataURL |
| abort | (none) | 中断读取操作 |
FileReader对象的常用事件
| 事件名称 | 描述 |
|---|---|
| onabort | 读取中断时触发 |
| onerror | 读取发生错误时触发 |
| onloadstart | 读取开始时触发 |
| onprogress | 正在读取时触发 |
| onload | 读取成功时触发 |
| onloadend | 读取完成时触发(无论成功或失败) |
FileReader对象的使用
上传图片并显示略缩图
<input type="file" multiple>
<div><img alt="null"></div>
<script>
var file = document.querySelector('input');
file.onchange = function () { // 当用户选择文件后执行此事件
console.log(this.files); // 查看FileList对象
};
//初始化盒子模型
var img= document.querySelector('img');
file.onchange = function () {
// ① 初始化reader对象
var reader = new FileReader();
// ② 读取文件内容
reader.readAsDataURL(this.files[0]); // 方式2:读取图片的缩略图
// ③ 将读取的内容显示到页面中
reader.onload = function () { // 读取成功时触发
img.src = this.result; // 将生成的内容赋值为img图片的src
};
}
</script>

上传文档并显示文本
<input type="file" multiple>
<div>
</div>
<script>
var file = document.querySelector('input');
var div= document.querySelector('div');
file.onchange = function () {// 当用户选择文件后执行此事件
console.log(this.files); // 查看FileList对象
var reader = new FileReader();// ① 初始化reader对象
reader.readAsText(this.files[0]);// ② 读取文件内容:读取文本
// ③ 将读取的内容显示到页面中
reader.onload = function () { // 读取成功时触发
console.log('成功');
div.innerHTML = this.result; // 将生成的内容显示到页面的div元素中
};
}
</script>
【前端】【H5 API】实现文件读取操作的更多相关文章
- Perl中文件读取操作
Perl中文件读取操作 http://blog.csdn.net/yangxuan12580/article/details/51506216
- java 的文件读取操作
/** * @param filePath 文件的全路径 * 返回我们读取到的文件内容 * **/ public static String readFile(String filePath) { F ...
- python文件读取操作、序列化
1.对文件进行读写操作时,先建立文件句柄 f = open("test.txt","r",encoding="UTF-8") 其中,r为文件 ...
- PHP大文件读取操作
简单的文件读取,一般我们会使用 file_get_contents() 这类方式来直接获取文件的内容.不过这种函数有个严重的问题是它会把文件一次性地加载到内存中,也就是说,它会受到内存的限制.因此,加 ...
- C# 图片 等 文件 读取操作 的一点提示
源于:在读取图片时,总喜欢首先采用:Image img=Image.FromFile("");操作,这种方式由于 调用图片的程序与图片文件是通过 绝对地址关联的,会造成 当前进程或 ...
- API内部文件读取
直接上代码吧 尝试将项目复制后建一个新的项目,结果总是有问题,不过可以把原项目转换为新项目,方法如下: 1.项目右键在android tools 有个 rename application packa ...
- Python学习日记之文件读取操作
Python内置了文件读写的函数open,read 用法示例: open('/home/root/files.txt ') 在打开文件后,操作完成后可以使用close()关闭文件,但比较好的文件读写方 ...
- 后端返回字符流,前端处理进行excel文件导出操作
针对于这种的文件导出,最关键的是响应类型的设置,也就是responseType的设置(responseType:"arraybuffer"或者responseType:" ...
- day08 学习小测试 九九乘法表 车牌划分计算 大文件读取操作
1.1需求:读取一个100G的文件,检测文件中是否有关键字keys=['苍老师','小泽老师',"alex"], 如果有则替换成"***",并写入到另一个文件中 ...
- HDFS的Java API 对文件的操作
在本次操作中所用到的命令 1.首先启动HDFS $HADOOP_HOME/sbin/start-dfs.sh 2.关防火墙 切换到root用户,执行service iptables stop 3.拷贝 ...
随机推荐
- Diffusion系列 - DDPM 公式推导 + 代码 -(二)
Denoising Diffusion Probabilistic Model(DDPM)原理 1. 生成模型对比 记 真实图片为 \(x_0\),噪声图片为 \(x_t\),噪声变量 \(z\sim ...
- js中判断数据类型的方法有哪些
判断数据类型可以使用 typeof 但是typeof 判断数组和函数时返回的都是Object 不能具体判断,这时使用 instanceof 可以判断对象是否是另一个函数创造的 : 用法: typeof ...
- 2021CSP复赛游记,总结与回顾
一曲起,一曲落:2021的CSP复赛也走过一个月了. 总而言之,成败只代表过去,过去不代表未来,收获满满,受益匪浅,足矣 今年,是我参加CSP的第四年,回忆当初踏入信息学的大门,跌倒过,受伤过,但从没 ...
- 使用 FastGPT 工作流搭建 GitHub Issues 自动总结机器人
如今任何项目开发节奏都很快,及时掌握项目动态是很重要滴,GitHub Issues 一般都是开发者和用户反馈问题的主要渠道. 然而,随着 Issue 数量的增加,及时跟进每一个问题会变得越来越困难. ...
- 五分钟掌握Python中配置文件解析器configparser的使用
--- 好的方法很多,我们先掌握一种 --- [背景] 这里描述的配置文件为自动化用例中使用到的信息,非pytest自动化框架中例如pytest.ini, conftest.py等具有特殊意义的配 ...
- 基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现一
一.前言介绍: 1.1 项目摘要 随着电子商务的迅猛发展和城市化进程的加快,快递业务量呈现出爆炸式增长的趋势.传统的快递寄取方式,如人工配送和定点领取,已经无法满足现代社会的快速.便捷需求.这些问题不 ...
- 【已解决】无法打开受保护的PDF
笔者在使用三星笔记导入PDF时提示"无法打开受保护的PDF",经查询需要使用在线破解工具来破解,重新下载就可以了 方法一:在线破解网站(适用于文件较小的PDF) 这里提供两个破解在 ...
- 数据结构课程设计报告-C 语言整数单链表的表示和实现
数据结构课程设计报告 专业名称:计算机科学与技术 课程名称:数据结构 实训题目:整数单链表的表示和实现 实训环境:C 语言实现( D ...
- Sickos1.1 详细靶机思路 实操笔记
Sickos1.1 详细靶机思路 实操笔记 免责声明 本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力.请在合法合规的前提下使用本文中提供的任何技术.方法或工具.如果您选择 ...
- Hibernate二级缓存 ---- 最佳实践
2010年11月7号,立冬,星期天.北京外面风好大,躲在家里整理一下这篇文章,发出来与大家分享,对大家有帮助是我最高兴的事儿. 不要想当然的认为使用了Hibernate的二级缓存就一定能够提高应用程序 ...