【前端】【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.拷贝 ...
随机推荐
- 利用CSV路径文件和.png图像,生成3D原图。并展示部分分割图像
具体代码 ,请看的的github if __name__ == "__main__": df = pd.read_csv(r'D:/compation/kaggle/train.c ...
- Java日期时间API系列26-----Jdk8中java.time包中的新的日期时间API类,YearMonth类的源码,转换和应用。
Java8中为年月新增了类YearMonth,可以用来表示卡片过期时间等问题. 1.YearMonth 默认格式为:2007-12 1.1 部分源码 * * @implSpec * This clas ...
- localStorage 、 sessionStoarge 和 cokies 的区别
1. 三者的概念 1.1 cookies Cookie,有时也用其复数形式 Cookies.类型为"小型文本文件",是某些网站为了辨别用户身份,进行Session(会话)跟踪而储存 ...
- select语句
SELECT语句可以从表中选择数据 SELECT <列名1>,<列名2> as "aaa" FROM <表名>; 查询两列数据SELECT * ...
- KubeSphere 社区双周报 | OpenFunction v1.0.0-rc.0 发布
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 入门级别 Nginx 常用配置清单
本文为转发文章,转发来自"https://mp.weixin.qq.com/s/ipUHaFPcDfIM9MsyqDGSEg",觉得不错分享给大家 Nginx 是一个高性能的 HT ...
- docker命令总结(一)
个人简单总结: 参数 用途 语法 示例 search 在docker hub中搜索镜像 docker search 镜像名称 docker search nginx pull 在docker hub中 ...
- 快速激活JRebel的方法
当谈到 JRebel 的激活时,有几种方法可以让您在 IntelliJ IDEA 中使用它.以下是一些选项: 在线激活(推荐): 安装 JRebel 插件后,点击 Jrebel Activation ...
- games101_Homework7
实现完整的 Path Tracing 算法 需要修改这一个函数: • castRay(const Ray ray, int depth)in Scene.cpp: 在其中实现 Path Tracing ...
- J2eefast页面调试状态下自动进入debugger断点
将fastJS.min.js 替换为 fastJs.js 将所使用到的模块的min.js 替换为js文件