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. tensorflow 实现线性方程

    下面的直接是代码: #!usr/bin/env python#coding:utf-8"""这个代码的作用是 通过 tensorflow 来计算 y = 0.3x + 0 ...

  2. redis整合spring @Bean写法

    jedis是一款java连接redis的客户端,spring基于jedis进行了封装,提供了简洁的操作redis的方法. 使用maven进行管理jar包之间的依赖: <dependency> ...

  3. 如何将Android默认的Camra程序导入到eclipse中

    由于工作需要将camera源码导入到Eclipse中,找了很多的方法,现将自己的整理发出来.... 由于开发的要求,需要将Android默认的Camra程序导入到eclipse中,进行修改和再开发. ...

  4. Asp.net Mvc 自定义Session (二)

    在 Asp.net Mvc 自定义Session (一)中我们把数据缓存工具类写好了,今天在我们在这篇把 剩下的自定义Session写完 首先还请大家跟着我的思路一步步的来实现,既然我们要自定义Ses ...

  5. Junit中常用的注解说明

    Java注解((Annotation)的使用方法是@注解名 ,能通过简单的词语来实现一些功能.在junit中常用的注解有@Test.@Ignore.@BeforeClass.@AfterClass.@ ...

  6. xml配置和基于java类的bean配置搭配使用

    如果同时使用了xml配置,和java类的bean配置(当然估计项目中一般不会这样), 在初始化容器指定资源文件的时候可能会比较麻烦 此时我们可以把基于java类的bean配置整合到xml中,或xml的 ...

  7. [Javascript] Lodash: Refactoring Simple For Loops (_.find, _.findLast, _.filter)

    This lesson shows how to refactor your old loops into using a simpler and more powerful lodash-style ...

  8. Ajax之旅(一)--什么是Ajax

    本来在学习DRP,但是无意中发现所附资料中有一些參考书籍,当中就有一个关于Ajax的,看了看,挺好的,于是决定暂停一下DRP,再次学习一下Ajax.记得第一遍学习Ajax的时候认为真的是一团雾水,看了 ...

  9. jQuery源代码学习笔记:构造jQuery对象

    2.1源代码结构: (function( window, undefined ) { var jQuery = (function() { // 构建jQuery对象 var jQuery = fun ...

  10. javascript进击(九)参考手册

    完整的 Number 对象参考手册 如需可用于 Number 对象的所有属性和方法的完整参考,请访问我们的 Number 对象参考手册. 该参考手册包含每个属性和方法的描述和实例. 完整的 Strin ...