HTML5中File

一 File对象与FileList对象

当将input元素的type类型设置为file时,web页面上会显示一个选择文本按钮和一个文本显示框,单击文件按钮可以选择一个文件,文本显示框中会显示选中的文件名称。

input元素设置multiple属性,可以选择多个文件,文本显示框中会显示选中了几个文件。

在这个过程中,用户选中的每一个对象都是一个file对象,用户选中的对个对象的集合就是fileList对象。File对象有两个属性,name属性表示文件名,但不包含文件的路径;

lastModifiedDate属性表示文件的最后修改的日期。

multiple:是否可以选择多个文件,多个文件时其value值为第一个文件的虚拟路径。

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <script type="text/javascript">
 7
 8         function show(){
 9             var file,filelist,mySpan;
10             file=document.getElementById("file");
11             filelist=file.files;
12             mySpan=document.getElementById("mySpan");
13             var names="";
14             for(var i=0;i<filelist.length;i++){
15                 names+=filelist[i].name+"<br />";
16
17             }
18             mySpan.innerHTML=names;
19         }
20     </script>
21 </head>
22 <body>
23     <input type="file" id="file" multiple />
24     <input type="button" onclick="show();" value="上传文件" /><br />
25     <span id="mySpan">文件名字</span>
26 </body>
27 </html>

二FileReader对象:读取文件里面的数据

FileReader对象用于读取文件里面的数据,并将这些数据读入内存。根据文件类型,可以选择不同的读取文件,并在异步读取文件的过程中触发多个事件。

1.FileReader对象

HTML5中的FileReader对象一共有4个方法,readAsBinaryString以二进制方式读取文件,readAsText以文本方式读取文件,readAsDateURL以DateURL方式读取文件,abort方法是中断读取操作。FileReader对象有一个result属性,用于存储读取文件的结果。

2.fileReader对象的事件

FileReader对象在异步读取文件时会触发很多事件,根据不同的事件处理不同的操作,可以使程序更加人性化和健壮。

3.以二进制方式读取文件

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>7.3.1</title>
<script language="javascript">
//以二进制方式读入文件
function fileBinary()
{
    var myDiv=document.getElementById("myDiv");
    //判断浏览器是否支持FileReader
if(typeof FileReader=="undefined")
    {
        myDiv.innerHTML="<h2>您的浏览器不支持FileReader!</h2>";
        return false;
    }
    var file=document.getElementById("file").files[0];
    var reader=new FileReader();
    //以二进制方式读入文件
    reader.readAsBinaryString(file);
    reader.onload =function(e)
    {
        myDiv.innerHTML=this.result;
    }
}
</script>
</head>
<body>
<input type="file" id="file" />
<input type="button" onClick="fileBinary();" value="二进制读取文件" />
<div id="myDiv" name="myDiv"></div>
</body>
</html>

4.以文本的方式读取文件

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>7.3.2</title>
<script language="javascript">
//以文本方式读取文件
function fileText()
{
    var myDiv=document.getElementById("myDiv");
    //判断浏览器是否支持FileReader
if(typeof FileReader=="undefined")
    {
        myDiv.innerHTML="<h2>您的浏览器不支持FileReader!</h2>";
        return false;
    }
    var file=document.getElementById("file").files[0];
    var reader=new FileReader();
    //以文本方式读取文件
reader.readAsText(file);
    reader.onload=function(e)
    {
        myDiv.innerHTML=this.result;
    }
}
</script>
</head>
<body>
<input type="file" id="file" />
<input type="button" onClick="fileText();" value="文本读取文件" />
<div id="myDiv" name="myDiv"></div>
</body>
</html>

5.以DateURL方式读取文件

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>7.3.3</title>
<script language="javascript">
//以DataURL方式读取文件
function fileDataURL()
{
    var myDiv=document.getElementById("myDiv");
    //判断浏览器是否支持FileReader
if(typeof FileReader=="undefined")
    {
        myDiv.innerHTML="<h2>您的浏览器不支持FileReader!</h2>";
        return false;
    }
    var file=document.getElementById("file").files[0];
    //判断文件类型
if(!/image\/\w+/.test(file.type))
    {
        myDiv.innerHTML="<h2>请选择图像文件!</h2>";
        return false;
    }
    var reader=new FileReader();
    //以DataURL方式读取文件
reader.readAsDataURL(file);
    reader.onload=function(e)
    {
        myDiv.innerHTML="<img src=‘"+this.result+"‘ />";
    }
}
</script>
</head>
<body>
<input type="file" id="file" />
<input type="button" onClick="fileDataURL();" value="DataURL读取文件" />
<div id="myDiv" name="myDiv"></div>
</body>
</html>

三.FileSystem对象

1.FileSystem对象介绍

FileSystem的主要功能有以下三个方面

①读取和处理文件:file/Blob、FileList、FileReader。

②创建和写入:BlobBuilder、FileWriter

③目录和文件系统访问:DirectoryReader、FileEntry/DirectoryEntry、LocalFileSystem。

2.请求文件系统

基于安全原因,Web应用通过浏览器的脚本去操作本地文件,首先需要获取操作许可,否则通过浏览器可以随意修改本地文件的是非常不安全的。通过调用Window.requestFileSystem()方法可以请求对文件系统的访问权限。

Window.requestFileSystem()方法需要4个参数,各参数的含义如下所示:

①type文件存储是否应该持久。如果设置为window.TEMPORARY,当浏览器需要更多空间时可自行决定是否删除该文件;如果设置为window.PERSISTENT,则需要获取用户或应用的明确授权才可以删除。

②size指定请求文件的大小,以字节为单位。

③successCallback 当文件系统请求成功后的回调函数,参数为FileSystem对象。

④errorCallback 当文件系统请求失败或错误时的回调函数,参数为FileError对象。

注意 :首次调用window.requestFileSystem()对象时,系统为应用创建一个沙箱文件,并为其指定一个名称。

时间: 2024-10-25 12:45:49

HTML5中File的相关文章

html5中form表单新增属性以及改良的input标签元素的种类

在HTML5中,表单新增了一些属性,input标签也有了更多的type类型,有些实现了js才能实现的特效,但目前有些浏览器不能全部支持.下面是一些h5在表单和input标签上的一些改动. <!DOCTYPE html><html> <head> <title>表单测试</title> <meta charset="utf-8" /> <!-- 在不支持h5的浏览器中,可以用CSS样式进行改写 --> &

HTML5中的二进制大对象Blob(转)

HTML5中的Blob对象和MYSQL中的BLOB类型在概念上是有点区别的.MYSQL中的BLOB类型就只是个二进制数据容器.而HTML5中的Blob对象除了存放二进制数据外还可以设置这个数据的MINE类型,这相当于对文件的储存,其它很多二进制对象也是从这个对象继承的. 一个Blob对象就是一个包含有只读原始数据的类文件对象.Blob对象中的数据并不一定得是JavaScript中的原生形式.File接口基于Blob,继承了Blob的功能,并且扩展支持了用户计算机上的本地文件. 创建Blob对象的

HTML5中的新增元素

HTML5中新增了大量的元素与属性,这些新增的元素和属性使HTML5的功能变得更强大,使网页设计效果有了更多的实现可能. 新增的主体结构元素section元素<section>标签定义文档中的节,比如章节,页眉,页脚或文档中的其他部分.它可以与h1,h2,h3,h4,h5,h6等元素结合起来使用,显示文档结构.<section> <h1>...</h1> <p>...</p></section> article元素<

html5中关于input用法的改变

测试环境:Firefox 10.0.Safari 5.1.Opera 11.61, Chrome 14.0.835.202 自己测试的时候都有写在form表单里,有提交按钮验证.因为对博客使用还不是很熟练,发博文的时候只有舍弃submit验证.大家在本地练习的时候可以写上submit验证,看各个浏览器的对这些新增的类型验证的区别. 一.新增的属性和属性值 在HTML5中,大幅度地增加与改良了input属性的种类,可以简单的使用这些属性来实现之前需要使用JavaScript才能实现的.对于html

html5中新增的form表单属性

html5中新增两个表单属性,分别autocomplete和novalidate属性 1.autocomplete属性 该属性用于控制自动完成功能的开启和关闭.可以设置表单或者input元素,有两个属性值,当设置为on时,启动该功能:当设置off时,关闭该功能.启用该功能后,当用户在自动完成域开始输入时,浏览器就会在该域中显示填写的选项.用户每提交一次,就会增加一个用于选择的选项 <!DOCTYPE html> <html> <head lang="en"

《HTML5网页开发实例详解》连载(四)HTML5中的FileSystem接口

HTML 5除了提供用于获取文件信息的File对象外,还添加了FileSystem相关的应用接口.FileSystem对于不同的处理功能做了细致的分类,如用于文件读取和处理的FileReader和FileList对象.用于创建和写入的Blob和FileWriter对象.用于目录和文件系统访问的DirectoryReader和LocalFileSystem对象等,FileSystem功能的出现是浏览器在文件系统上的突破,具有里程碑的意义,虽然目前还尚未完全成熟,但足以让开发者发挥更大的想象空间.

html5中利用FileReader来读取文件。

利用FileReader来读取文件的能够来实现即时预览的效果,这个也是在html5中才有的功能. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> &l

4.html5中超链接和路径

html中超链接都是通过<a>标签实现的,html5也不例外,这里就来探讨一下<a>标签. <a>元素属于文本元素,有一些私有属性或者叫局部属性.那么,相对应的还有通用属性或叫做全局属性,全局属性是的问题我们以后再来探讨. 对于其私有属性有哪些,下面用一个表格进行了整理: 属性名称 说明 href 指定<a>元素所指资源的 URL hreflang 指向的链接资源所使用的语言 media 说明所链接资源用于哪种设备 rel 说明文档与所链接资源的关系类型 t

使用HTML5的File实现base64和图片的互转

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-