HTML5 FileReader读取Blob对象API详解

时间:2021-08-03 11:57:49

 使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可以使用File对象或者Blob对象来指定所要读取的文件或数据.其中File对象可以是来自用户在一个<input>元素上选择文件后返回的FileList对象,也可以来*拖放操作生成的 DataTransfer对象,还可以是来自在一个HTMLCanvasElement上执行mozGetAsFile()方法后的返回结果。

创建FileReader对象,

var reader = new FileReader();

HTML5 FileReader读取Blob对象API详解

属性:

1.result  jsval 读取的文件内容,这个属性只在读取操作完成之后才有效,并且数据的格式取决于读取操作发起的方法。只读

2.readyState  unsigned short  当前状态值,0---EMPTY 还没有记载任何数据。1--LOADING 正在被记载。2---DONE 已完成全部的读取请求。

3.error  DOMError 在读取文件时发生的错误,只读。

方法:

void abort() ,中止读取操作,返回时,readyState属性值为DONE

void readAsArrayBuffer( in Blob blob), 读取文件为 ArrayBuffer

void readAsBinaryString(in Blob blob),读取文件为二进制字符串,IE浏览器不支持该方法

void readAsDataURL(in Blob blob),读取文件为DataURL ,关于DataURL

void readAsText(in Blob blob,[optional] in DOMString encoding),指定文件编码(默认值utf-8),读取Blob为字符串

事件监听:

onabort 当读取操作被终止时调用.

onerror 当读取操作发生错误时调用.

onload 当读取操作成功完成时调用.

onloadend 当读取操作完成时调用,不管是成功还是失败.该处理程序在onload或者onerror之后调用.

onloadstart 当读取操作将要开始之前调用.

onprogress 在读取数据过程中周期性调用.

事件传递的参数对象:

HTML5 FileReader读取Blob对象API详解

//e.target  FileReader
//e.total 文件总大小,字节
//e.type 上传状态‘load’
//e.timeStamp 还不知道

浏览器兼容性

Desktop、Mobile

Feature Firefox (Gecko) Chrome Internet Explorer* Opera* Safari
Basic support 3.6 (1.9.2) 7 10 Not supported Not supported

*IE9有一个File API Lab.Opera从11.10开始部分支持该API.

实例1,检测浏览器是否支持FileReader

//1.检测浏览器是否支持FileReader
//测试结果,IE>=10,Google,FF
if (window.FileReader) {
var fr = new FileReader();
console.info(fr);
} else {
alert("Not supported by your browser!");
}

实例2. FileReader读取File对象,读取文件实例

<div class="container">
<input type="file" id="file" multiple />
<input type="button" id="btn1" value="选择上传文件" onclick="showFiles();" />
<h4>
选择文件如下:
</h4>
<blockquote></blockquote>
</div>
var fileBox = document.getElementById('file');
function showFiles() {
//获取选择文件的数组
var fileList = fileBox.files;
for (var i = 0; i < fileList.length; i++) {
var file = fileList[i];
readFile(file);
}
}
//读取文件内容
//reader.readAsArrayBuffer //将读取结果 封装成 ArrayBuffer ,如果想使用一般需要转换成 Int8Array或DataView
//reader.readAsBinaryString //在IE浏览器中不支持改方法
//reader.readAsText 该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8
//reader.readAsDataURL //读取结果为DataURL
//reader.readyState 上传中的状态
function readFile(file) {
var reader = new FileReader();
//reader.readAsText(file);
//中文windows系统 txt 文本多数默认编码 gbk
reader.readAsText(file, 'gbk');
console.info(reader.readyState); // 状态值 1
reader.onload = function (e) {
console.info(e); //事件对象
//e.target FileReader
//e.total 文件总大小,字节
//e.type 上传状态‘load’
//e.timeStamp 还不知道 console.info(reader.readyState); //状态值 2
var result = reader.result;
$('.container blockquote').text(result);
}
}

更多实例:

HTML5 FileReader读取Blob对象API详解的更多相关文章

  1. document&comma;element&comma;dom对象api详解

    Document对象: 根元素的访问,也就是HTML标签的访问.使用document.documentElement访问根对象. 使用Document对象查找对象 getElementById():通 ...

  2. 前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输

    HTML5中的Blob对象只是二进制数据的容器,本身并不能操作二进制,故本篇将对其操作对象FileReader进行介绍. FileReader FileReader主要用于将文件内容读入内存,通过一系 ...

  3. hibernate学习(2)——api详解对象

    1   Configuration 配置对象 /详解Configuration对象 public class Configuration_test { @Test //Configuration 用户 ...

  4. Java8学习笔记(五)--Stream API详解&lbrack;转&rsqb;

    为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...

  5. DOM API详解

    来源于:http://zxc0328.github.io/2016/01/23/learning-dom-part1/ https://zxc0328.github.io/2016/01/26/lea ...

  6. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  7. 大数据学习笔记——Spark工作机制以及API详解

    Spark工作机制以及API详解 本篇文章将会承接上篇关于如何部署Spark分布式集群的博客,会先对RDD编程中常见的API进行一个整理,接着再结合源代码以及注释详细地解读spark的作业提交流程,调 ...

  8. OpenGL ES&colon; &lpar;4&rpar; EGL API详解 &lpar;转&rpar;

    上一节我们初步学习了 OpenGL ES.EGL.GLSL 的相关概念,了解了它们的功能,以及它们之间的关联.我们知道了 EGL 是绘制 API(比如 OpenGL ES)与 底层平台窗口系统之间的接 ...

  9. Java 8 Stream API详解--转

    原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...

随机推荐

  1. php检测文件内容编码的方法

    核心用到的是mb_convert_encoding函数,示例代码如下: <?php header("Content-type: text/html; charset=utf-8&quo ...

  2. Ubuntu 安装WPS

    1.到官网下载deb安装包 http://community.wps.cn/download/ 2.安装 sudo dpkg -i wps-office_10.1.0.5672~a21_amd64.d ...

  3. Centos6&period;5 SVN服务器 搭建及配置

    现有的项目开发中,版本控制机必不可少.合理的使用版本控制可以提高开发效果,在保证项目是最新的同时,也提高了源代码的安全性. 工具/原料 接入Internet的一台Centos6.5Linux计算机 安 ...

  4. CentOS6&period;5安装tomcat7

    把下载的apache-tomcat-7.0.19.tar.gz文件上传到服务器的根目录    #tar zxvf apache-tomcat-7.0.19.tar.gz    #mv apache-t ...

  5. &lbrack;io PWA&rsqb; Great libraries and tools for great Progressive Web Apps

    sw-toolbox: Github It provides a cononical implementation of all the runtime caching strategies that ...

  6. ANDROID资源文件【转】

    1.  资源包括:文本字符串.图像和图标.音频文件.视频和其他应用程序使用的组件. 2.  在Android工程中,Android资源文件是同Java类文件分开存储的,大多数常见的资源类型存储在XML ...

  7. &period;bash&lowbar;profile 加载

    1.Debian默认的shell是Bash, 1.1 命令行 和 ssh 登录 ,首先读入 /etc/profile,这是对所有用户都有效的配置:然后依次寻找下面三个文件,这是针对当前用户的配置. ~ ...

  8. webapi返回文件流

    逻辑说明 webapi返回类型为IHttpActionResult接口,内部方法返回HttpResponseMessage. public interface IHttpActionResult { ...

  9. 了解django部署(Django &plus; Uwsgi &plus; Nginx)

    首先了解下基本概念: 1 WSGI WSGI:全称是Web Server Gateway Interface,是python应用程序或者框架和web服务器之间的一种接口,被广泛接受.WSGI不是服务器 ...

  10. ExceptionLess使用

    1.os使用windows server 2012,省的升级iis express-iis 8(测试环境是IIS Express 8,生产环境IIS 7.5).PowerShell 3+了. 2.wi ...