博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML5 FileAPI
阅读量:6603 次
发布时间:2019-06-24

本文共 2899 字,大约阅读时间需要 9 分钟。

在HTML5中,提供了一个关于文件操作的API,通过这个API,对于从web页面上访问本地文件系统的相关处理变得十分简单。到目前为止只有部分浏览器对它提供支持。

1.FileList对象和File对象

  FileList对象表示用户选择的文件列表,在HTML4中file控件内只允许放置一个文件,但在HTML5中通过添加multiple属性,file控件内允许放置多个文件。控件内的每一个用户选择的文件都是一个file对象,而FileList就是这些file对象的列表,代表用户选择的所有文件。file对象有两个属性,一个是name,代表文件名不包含文件的路径;一个是lastModifiedDate,表示文件最后被修改的日期。

View Code
1   2   3       4         
5 FileList and File 6 17 18 19 20 21 22

2.Blob对象

  提到Blob对象,估计有人会想起OracleDB中Blob字段,意义上有些类似。HTML5中Blob表示二进制原始数据,它提供一个slice()方法,可以通过这个方法访问到字节内部的原始数据块。事实上,上面提到的file对象继承了Blob对象。

  Blob对象的两个属性,size:表示一个对象的字节长度。type:表示一个对象的MIME类型,如若是未知类型返回空字符串。

View Code
1             function showFileInfo(){
2 var file = document.getElementById('file').files[0]; 3 var size = document.getElementById('fileType'); 4 var type = document.getElementById('fileSize'); 5 size.innerHTML = file.size; 6 type.innerHTML = file.type; 7 }

  对于图像类型的文件,Blob对象的type属性都是以image/开头,可以利用这个特性对用户选择的文件类型做判断。

  

View Code
1             function showFileInfo(){
2 var file = document.getElementById('file').files[0]; 3 if(checkImage(file)){
4 var size = document.getElementById('fileType'); 5 var type = document.getElementById('fileSize'); 6 size.innerHTML = file.size; 7 type.innerHTML = file.type; 8 } 9 else{
10 return ; 11 } 12 } 13 function checkImage(file){
14 if(!/img\/\w+/.test(file.type)){
15 alert(file.name + "不是图片"); 16 return false; 17 } 18 return true; 19 }

  另外,file控件在HTML5标准中添加了accept属性,用来限制接受的文件类型,但目前各浏览器对齐支持都仅限于在打开文件选择窗口时默认的选择图像文件而已,如果选择其他类型,控件也能接受。

3.FileReader接口

  3.1接口方法

  FileReader接口提供了四个方法,其中3个用来读取文件,1个用来中断文件的读取。

方法名   参数 描述
readAsBinaryString() file 将文件读取为二进制字符串,通常将它传到后端,后端可以通过这段字符串存储文件
readAsDataURL() file 将文件读取为一段data url字符串,事实上是将小文件以一种特格式的URL地址直接读取到页面。小文件通常指图片与html等格式文件
readAsText() file [encoding] 将文件以文本的方式读取,其中第二个参数为文本的编码。
abort() (none) 中断读取操作。

 

 

 

  需要注意的是,无论读取成功还是失败,方法都不会返回读取结果,结果返回在result属性中。

  3.2接口事件

  FileReader接口提供了一套完整的事件模型,用于捕获读取文件时的状态。

事件 描述
onabort 数据读取中断时发生
onerror 数据读取出错时发生
onloadstart 数据读取开始时发生
onload 数据读取成功完成时发生
onloadend 数据读取完成时发生无论读取成功还是失败
onprogess 数据读取中

  3.3实例

  

View Code
1   2   3       4         
5
6 FileReader 7
8
9 47 48 49 50

51 52 53 54 55

56
57 58
59 60

 

转载于:https://www.cnblogs.com/MrBackKom/archive/2012/03/20/2407249.html

你可能感兴趣的文章
Kafka – kafka consumer
查看>>
gvim写html代码时如何快速地跳转到一个标签的结束位置: 终极插件: matchit.vim
查看>>
转:NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因
查看>>
Java多线程之ReentrantLock重入锁简介与使用教程
查看>>
MongoDB C++ gridfs worked example
查看>>
JSONP
查看>>
Visual Studio 2017各版本安装包离线下载
查看>>
Solidworks如何改变零件颜色
查看>>
C#线程安全的那些事
查看>>
eclipse不会自动编译的问题解决
查看>>
Mysql报错......\xE6\x80\xBB\xE7\x9B\x91' for column...
查看>>
字符串考前总结
查看>>
【论文笔记】Social Role-Aware Emotion Contagion in Image Social Networks
查看>>
2.1.1优化程序性能
查看>>
rpm安装PostgreSQL
查看>>
k sum(lintcode)
查看>>
如何部署 Calico 网络?- 每天5分钟玩转 Docker 容器技术(67)
查看>>
28. extjs中Ext.BLANK_IMAGE_URL的作用
查看>>
如何通过Node.js启动cesium
查看>>
Mac本地环境配置以及安装织梦CMS,增加新的坑解决办法
查看>>