1.File API

  一直以来,不能直接访问用户计算机中的文件都是web应用开发当中的一大障碍。File API的宗旨是为web开发人员提供一种安全的方式,以便在客户端访问用户计算机中的文件,并更好的对这些文件进行操作。

  HTML5在DOM中为文件输入元素添加了一个files的集合,在通过文件输入字段选择了一个或多个文件时,files集合中将包含一组File对象 ,每个File对象对应着一个文件,每个File对象都有下列只读对象。

  name:本地文件系统中的文件名。

  size:文件的字节大小

type: 字符串,文件的MIME类型

  lastModifiedDate: 文件上一次被修改时间

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
window.onload = function() {
var filesList = document.getElementById("fileList");
filesList.addEventListener('change', function(event) {
var files = event.target.files,
i=0,
len = files.length;
while(i<len){
alert(files[i].name);
i++;
}
});
};
</script>
</head>

<body>
<input type="file" name="fileList" id="fileList" value="" />
</body>

</html>

不过file API的功能不仅仅如此,通过他提供的FIleReader类型甚至还可以读取文件中的数据

FileReader类型实现的是一种异步文件读取机制,方法如下:

1.readAsText(file,encoding)  以纯文本形式读取文件,将读取的文件保存到result属性中。

2.readAsDataURL(file)  读取文件将文件以数据URI的形式保存在result中

3.readAsBinaryString(file)  读取文件并将一个字符串保存在result属性中。字符串中每个字符表示一字节

4.readAsArrayBuffer(file)读取文件并将一个包含文件内容的ArrayBuffer保存在result中。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
window.onload = function() {
var filesList = document.getElementById("fileList");
filesList.addEventListener('change', function(event) {
var info ="",
output=document.getElementById("output"),
progress=document.getElementById("progress"),
files = event.target.files,
type= "default",
reader = new FileReader();

if(/image/.test(files[0].type)){
reader.readAsDataURL(files[0]);
type="image";
}else{
reader.readAsText(files[0]);
type="text";
}

reader.error=function(){
output.innerHTML="Could not read file"+reader.error.code;
};
reader.onprogress=function(event){
if(event.lengthComputable){
progress.innerHTML=evnet.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;
};
});
};
</script>
</head>

<body>
<input type="file" name="fileList" id="fileList" value="" />
<p>output--</p>
<div id="output"></div>
<p>progress--</p>
<div id="progress"></div>
</body>

</html>

这个读取过程是异步的,因此FileReader也提供了几个事件:

1.progress  是否又读取了新数据

2.error  是否发生错误

3.load 是否已经读取完整个文件。

HTML5 File API的更多相关文章

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

    前言 在 HTML5 File API 出现之前,前端对于文件的操作是非常有局限性的,大多需要配合后端实现.出于安全角度考虑,从本地上传文件时,代码不可能获取文件在用户本地的地址,所以纯前端不可能完成 ...

  2. Resumable.js – 基于 HTML5 File API 的文件上传

    Resumable.js 是一个 JavaScript 库,通过 HTML5 文件 API 提供,稳定和可恢复的批量上传功能.在上传大文件的时候通过每个文件分割成小块,每块在上传失败的时候,上传会不断 ...

  3. HTML5 File api 实现断点续传

    目前市场上大多数的网站的断点上传都是需要安装浏览器插件的,本文就针对高级浏览器的环境下,通过HTML5 File api实现断点上传进行说明 一.实现文件多选 HTML5的<input>新 ...

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

    1.工具的用途:用HTML5 file api读取文件的MD5码.MD5码在文件的唯一性识别上有很重要的应用,业内常用MD5进行文件识别.文件秒传.文件安全性检查等: 2.适用性:IE.Chrome皆 ...

  5. HTML5 File API 全介绍

    在 HTML5 File API 出现之前,前端对于文件的操作是非常有局限性的,大多需要配合后端实现.出于安全角度考虑,从本地上传文件时,代码不可能获取文件在用户本地的地址,所以纯前端不可能完成一些类 ...

  6. HTML5 File API的应用

    HTML5 File API简介 HTML5File API协议族 Directories and System   文件系统和目录读取 FileWriter   写入文件 FileReader   ...

  7. HTML5 file API加canvas实现图片前端JS压缩并上传

    一.图片上传前端压缩的现实意义 对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验. 这种体验包括两方面: 由于上传图片尺寸比较小,因此上传速度会比较快,交互会更加流畅 ...

  8. 图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传

    一 . 背景及效果 当前互联网上传文件最多的就是图片文件了,但是传统web图片的截图上传需要:截图保存->选择路径->保存后再点击上传->选择路径->上传->插入. 图片 ...

  9. HTML5 File API解读

    1,概述 Web应用应该具备处理广泛用户输入问题的能力,例如在Web富应用中,用户希望上传文件到服务器.File API定义了访问文件的基本操作途径,包括文件.文件列表集.错误处理等,同时,File ...

随机推荐

  1. oracle 表空管理方式(LMT)、ASSM段管理方式、一级位图块、二级位图块、三级位图块。

    今天是2013-12-16,今天和明天是我学习oracle生涯中一个特殊的日子.今天晚上进行了一下表空间管理方式的学习,在此记录一下笔记. 对于oracle数据库最小i/0单位是数据块,最想分配空间单 ...

  2. Lucene教程具体解释

    (建立索引)] )中生成的索引文件的存放地址.详细步骤简单介绍例如以下: 1.创建Directory对象,索引目录 2.创建IndexSearch对象,建立查询(參数是Directory对象) 3.创 ...

  3. dtrace-oracle-vage :吕海波

    http://blog.itpub.net/321157/cid--1-list-1/ http://www.hdb.com/timeline/velqk

  4. Executing System commands in Java---ref

    One of the nice features of Java language is that it provides you the opportunity to execute native ...

  5. Flex学习教程网站地址

    http://www.985school.com/flex/complex_controls.html

  6. TimePicker 和TimePickerDiag

    先建立以个xml,然后拖拽TimerPicker; TimePicker和TimePickerDiag TimerPicker : 先建立xml文件,然后拖拽TimePicker然后在MainActi ...

  7. javascript进击(三)简介

    JavaScript 表单验证(可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证) 被 JavaScript 验证的这些典型的表单数据有: 用户是否已填写表单中的必填项目? 用户输 ...

  8. 使用nexus创建maven私有仓库

    nexus安装 nexus下载 wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.1-01-bundl ...

  9. 【转】【2015MIIC】迅雷CTO陈磊:互联网思维会害死很多传统企业

    MIIC2015大会的“跨界与重构”论坛上,迅雷CTO.网心科技CEO陈磊的演讲引起众多共鸣——独家揭秘“互联网大忽悠”,给这群人画了像,互联网大忽悠通常有五招: 第1招,画大饼,给你一个宏伟的目标: ...

  10. 安卓项目-利用Sqlite数据库,开发新闻发布系统

    本教程致力于程序员可以快速的学习安卓移动端手机开发. 适合于已经习得一种编程语言的同仁. 更多志同道合,想要学习更多编程技术的大神们. 小弟不才,麻烦关注一下我的今日头条号-做全栈攻城狮. 本文章是基 ...