JavaScript File API总结
来源:互联网 发布:数据库表结构属性 编辑:程序博客网 时间:2024/06/08 17:03
1.基本思路
HTML5在DOM中为文件输入元素添加了一个files集合,在通过文件输入字段选择了一个或多个文件时,files集合将包含一组File对象,每个File对象对应着一个文件,其中每个文件有name, size, type, lastModifiedDate属性。通过监听change事件并读取files集合就可以知道选择的每个文件的信息。示例代码如下:
var filesList = document.getElementById("files-list");EventUtil.addHandler(filesList, "change", function(event){ var files = EventUtil.getTarget(event).files, i = 0, len = files.length; while(i < len){ console.log(files[i].name + file[i].type); i++; }});
2.FileReader类型
其实现方式是一种异步文件读取机制,可以把FileReader想象成XMLHttpRequest,区别是它读取的是文件系统,而不是远程服务器。FileReader提供一下几个方法。
(1)readAsText(file, encoding):以纯文本的方式读取文件,将读取到的文本保存在result属性中,encoding用于指定编码的类型,可选。
(2)readAsDataURL(file):读取文件并将文件以数据URI的形式保存在result属性中
(3)readAsBinaryString(file):读取文件并将一个字符串保存在result属性中,字符串中的每个字符表示一个字节。
(4)readAsArrayBuffer(file):读取文件并将一个包含文件的内容的ArrayBuffer保存在result属性中。
由于读取文件的过程是异步的,所以FileReader会涉及三个主要的事件。
progress(是否读取新数据):触发该事件以后,通过事件对象可以获得lengthComputable、loaded和total属性。
error(是否发生错误): 初始error事件时,相关信息将被保存到FileReader的error属性中,error属性是一个对象,其只有一个属性code(错误码),1表示未找到文件,2表示安全性错误,3表示读取中断,4表示文件不可读,5表示编码错误。
load(是否已经读完整个文件): 文件成功加载后会触发load事件。
实例代码如下所示:
var filesList = document.getElementById("files-list");EventUtil.addHandler(filesList, "change", function(event){ var info = "", output = document.getElementById("output"), progress = document.getElementById("progress"), files = EventUtil.getTarget(event).files, type = "default", reader = new FileReader(); if(/image/.test(files[0].type)){ reader.readAsDataURL(file[0]); type = "image"; } else { reader.readAsText(files[0]); type = "text"; } reader.onerror = function(){ output.innerHTML = "Could not read file, error code is" + reader.error.code; }; reader.onprogress = function(){ if(event.lengthComputable){ progress.innerHTML = event.loaded + "/" + event.total; } }; reader.onload = function(){ var html = ""; switch(type){ case "image": html = "<img src=\" + reader.result + "\">"; break; case "text": html = reader.result; break; } output.innerHTML = html; }});
3.读取文件的部分内容
可以通过File对象的slice()方法实现读取文件的部分内容,方法返回的是Blob实例,Blob是File类型的父类型,在不同的浏览器中方法名不同,如下是一个通用的函数。
function blobSlice(blob, startByte, length){ if(blob.slice){ return blob.slice(startByte, length); } else if(blob.webkitSlice){ return blob.webkitSlice(startByte, length); } else if(blob.mozSlice){ return blob.mozSlice(startByte, length); } else { return null; }}
下面是使用该方法的代码:
var filesList = document.getElementById("files-list");EventUtil.addHandler(filesList, "change", function(event){ var info = "", output = document.getElementById("output"), progress = document.getElementById("progress"), files = EventUtil.getTarget(event).files, reader = new FileReader(); blob = blobSlice(files[0], 0, 32); if(blob){ reader.readAsText(blob); reader.onerror = function(){ output.innerHTML = "Could not read file, error code is" + reader.error.code; }; reader.onload = function(){ output.innerHTML = reader.result; } } else { alert("Your browser dosen't support slice()"); }});
4.对象URL
后期再加….
- JavaScript File API总结
- File常用API总结
- JavaScript File API 文件上传
- JavaScript常用API总结
- JavaScript常用API总结
- JavaScript常用API总结
- JavaScript常用API总结
- JavaScript常用API总结
- JavaScript常用API总结
- JavaScript常用API总结
- javascript常用api总结
- JavaScript常用API总结
- 使用 JavaScript File API 实现文件上传
- 使用 JavaScript File API 实现文件上传
- 使用 JavaScript File API 实现文件上传
- 通过 FILE API 使用 JAVASCRIPT 读取文件
- 使用 JavaScript File API 实现文件上传
- 通过 File API 使用 JavaScript 读取文件
- 安装ubuntu出现空闲的空间不可用
- skynet学习笔记一
- RPC原理
- 安卓开发之ListView优化方案
- linux安装必要的开发工具
- JavaScript File API总结
- Leetcode_144_Binary Tree Preorder Traversal
- 闲云笔记——Android
- Kotlin学习之函数
- oracle——SQL复习11
- HBase Create Table
- vim 语法高亮
- ibatis中 $ 于 # 的 区别?
- linux概述