HTML5 File API解读

1,概述

  Web应用应该具备处理广泛用户输入问题的能力,例如在Web富应用中,用户希望上传文件到服务器。File API定义了访问文件的基本操作途径,包括文件、文件列表集、错误处理等,同时,File API还定义了描述文件异步处理进程中的一些元数据。接下来,我们一起看看File的应用。

2,FileList接口

 接口描述:

1 interface FileList {
2       getter File? item(unsigned long index);
3       readonly attribute unsigned long length;
4 };

由FileList对象实现,它表示上传文件的集合列表。如下:

<input type="file" multiple="multiple" name="file" id="file" />

var fileList = document.forms[‘formName‘][‘file‘].files;
fileList有如下属性:
    1,length:表示文件列表长度,即文件数量
fileList有如下方法:
    1,index(indexNum):indexNum是文件在文件列表中的位置,从0开始,和普通数组下标一样,如果不存在,则返回null.

3,Blob接口

  接口描述:

 1 interface Blob {
 2
 3       readonly attribute unsigned long long size;
 4       readonly attribute DOMString type;
 5
 6       //slice Blob into byte-ranged chunks
 7       Blob slice(optional long long start,
 8                  optional long long end,
 9                  optional DOMString contentType);
10
11     };

由Bob对象实现,它是一个原始数据对象。如下:

 1 // Create a new Blob object
 2
 3 var a = new Blob();
 4
 5 // Create a 1024-byte ArrayBuffer
 6 // buffer could also come from reading a File
 7
 8 var buffer = new ArrayBuffer(1024);
 9
10 // Create ArrayBufferView objects based on buffer
11
12 var shorts = new Uint16Array(buffer, 512, 128);
13 var bytes = new Uint8Array(buffer, shorts.byteOffset + shorts.byteLength);
14
15 var b = new Blob(["foobarbazetcetc" + "birdiebirdieboo"], {type: "text/plain;charset=UTF-8"});
16
17 var c = new Blob([b, shorts]);
18
19 var a = new Blob([b, c, bytes]);
20
21 var d = new Blob([buffer, b, c, bytes]);

Bolb有如下属性:

  1,size:数据的大小

  2,type:数据的MIME类型

Bolb有如下方法:

  1,slice:用来读取原始数据中的某块数据,详情见如下例子

 1 // obtain input element through DOM
 2
 3     var file = document.getElementById(‘file‘).files[0];
 4     if(file)
 5     {
 6       // create an identical copy of file
 7       // the two calls below are equivalent
 8
 9       var fileClone = file.slice();
10       var fileClone2 = file.slice(0, file.size);
11
12       // slice file into 1/2 chunk starting at middle of file
13       // Note the use of negative number
14
15       var fileChunkFromEnd = file.slice(-(Math.round(file.size/2)));
16
17       // slice file into 1/2 chunk starting at beginning of file
18
19       var fileChunkFromStart = file.slice(0, Math.round(file.size/2));
20
21       // slice file from beginning till 150 bytes before end
22
23       var fileNoMetadata = file.slice(0, -150, "application/experimental");
24     }

4,File接口

  接口描述:

1  interface File : Blob {
2           readonly attribute DOMString name;
3           readonly attribute Date lastModifiedDate;
4  };

由File对象实现,它继承自Blob对象,指向一个具体的文件。

File有如下属性:

  1,name:文件的名称

2,lastModifiedDate:文件的最后修改时间

5,FileReader接口

  接口描述:

 1     interface FileReader: EventTarget {
 2
 3       // async read methods
 4       void readAsArrayBuffer(Blob blob);
 5       void readAsBinaryString(Blob blob);
 6       void readAsText(Blob blob, optional DOMString encoding);
 7       void readAsDataURL(Blob blob);
 8
 9       void abort();
10
11       // states
12       const unsigned short EMPTY = 0;
13       const unsigned short LOADING = 1;
14       const unsigned short DONE = 2;
15
16
17       readonly attribute unsigned short readyState;
18
19       // File or Blob data
20       readonly attribute any result;
21
22       readonly attribute DOMError error;
23
24       // event handler attributes
25       attribute [TreatNonCallableAsNull] Function? onloadstart;
26       attribute [TreatNonCallableAsNull] Function? onprogress;
27       attribute [TreatNonCallableAsNull] Function? onload;
28       attribute [TreatNonCallableAsNull] Function? onabort;
29       attribute [TreatNonCallableAsNull] Function? onerror;
30       attribute [TreatNonCallableAsNull] Function? onloadend;
31
32     };

由FileReader对象实现,用来读取文件里面的数据,提供三个常用的读取文件数据的方法,另外读取文件数据也提供了异步方式。

FileReader属性列表:

事件列表 事件说明
onloadstart 文件读取开始时触发
onprogress  当读取进行中时定时触发。事件参数中会含有已读取总数据量。
onabort 当读取被中止时触发。
onerror 当读取出错时触发。
onload 当读取成功完成时触发。
onloadend 当读取完成时,无论成功或者失败都会触发

FileReader方法列表:

方法列表   方法说明
readAsBinaryString() 读取文件内容,读取结果为一个 binary string。文件每一个 byte 会被表示为一个 [0..255] 区间内的整数。函数接受一个 File 对象作为参数。
readAsText() 读取文件内容,读取结果为一串代表文件内容的文本。函数接受一个 File 对象以及文本编码名称作为参数。
readAsDataURL 读取文件内容,读取结果为一个 data: 的 URL。DataURL 由 RFC2397 定义

参考出处:http://www.w3.org/TR/file-upload/

时间: 2024-08-05 02:22:30

HTML5 File API解读的相关文章

HTML5 file API加canvas实现图片前端JS压缩并上传 (转载)

一.图片上传前端压缩的现实意义 对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验. 这种体验包括两方面: 由于上传图片尺寸比较小,因此上传速度会比较快,交互会更加流畅,同时大大降低了网络异常导致上传失败风险. 最最重要的体验改进点:省略了图片的再加工成本.很多网站的图片上传功能都会对图片的大小进行限制,尤其是头像上传,限制5M或者2M以内是非常常见的.然后现在的数码设备拍摄功能都非常出众,一张原始图片超过2M几乎是标配,此时如果用户想把手机或相机中的某个得意图片

HTML5 File API初探 支持文件拖放上传功能

新一代Web开发标准HTML 5可以带来远远超出其本身作为一种标记语言的能力,除我们之前介绍的HTML 5可完美支持视频音频元素外,还提供一些强大的脚本工具,负责监督HTML5发展进程的W3C组织,刚刚出版了一份有关文档操作API的规格草案,HTML5 File API 接口功能. 该HTML5 File API的设计初衷,是改善基于浏览器的Web应用程序处理文件上传的方式,使文件直接拖放上传成为可能.草案定义了新的输入选项 ﹤input type=”file”﹥ 来处理文件上传. 更为惊喜的是

HTML5 file api读取文件的MD5码工具

1.工具的用途:用HTML5 file api读取文件的MD5码.MD5码在文件的唯一性识别上有很重要的应用,业内常用MD5进行文件识别.文件秒传.文件安全性检查等: 2.适用性:IE.Chrome皆兼容: 3.缺陷:当上传大文件时,需要较长的时间才能扫描出MD5码: 4.关于引用:其中引用了js文件(spark-md5.js) <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo

HTML5 File API — 拖拽显示

1.HTML5拖拽 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 如果是html中的元素,要进行拖动,需要设置draggable为true. 下面的代码显示了img在两个div里任意拖动. 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <style type="text/css"> 5 #div1, #div2 6 {float:left; width:100px; height:35px;

HTML5 File API — 让前端操作文件变的可能

前言 在 HTML5 File API 出现之前,前端对于文件的操作是非常有局限性的,大多需要配合后端实现.出于安全角度考虑,从本地上传文件时,代码不可能获取文件在用户本地的地址,所以纯前端不可能完成一些类似图片预览的功能.但是 File API 的出现,让这一切变成了可能. 跟着楼主由浅入深,了解下强大的 File API 吧. FileList FileList 对象针对表单的 file 控件.当用户通过 file 控件选取文件后,这个控件的 files 属性值就是 FileList 对象.

javascript 使用Html5 File Api进行文件读取

javascript 使用Html File Api进行文件读取,注意"读取"是只读不写,不可以主动获取浏览器所在主机的文件列表. Html5 中 FileApi主要有 FileUpload, File,FileList,FileError,Blob,FileReader,DataTransfer. 这里主要测试File.因此有必要给一个 test target <form action="javascript:void(0)" method="po

HTML5 File API +JavaSevlet 实现文件上传实时更新进度

1. [代码]java1.8+Tomcat8.0 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 7

使用HTML5 FILE API上传图片移动端缩略图兼容问题

我什么都不说,上代码: <!DOCTYPE html> <html> <head> <title>pc和手机端的图片上传处理</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> </head> <body> <p&

HTML 5 File API:文件拖放上传功能

即将到来的 html5 规范有几个特性,以致使 HTML 远远超出其本身作为一种标记语言的能力,并为 Web 开发者提供了一些强大的脚本工具.负责监督 HTML5 发展进程的 W3C 组织,刚刚出版了一份强有力的规格草案 – HTML5 File API 接口功能. 该 API 的设计初衷,是改善基于浏览器的 Web 应用程序处理文件上传的方式,使文件直接拖放上传成为可能.草案定义了新的输入选项 <input type=”file”> 来处理文件上传. 更为惊喜的是,该 API 为开发者提供了