iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >HTML5的File API有哪些对象
  • 776
分享到

HTML5的File API有哪些对象

2024-04-02 19:04:59 776人浏览 八月长安
摘要

本文小编为大家详细介绍“HTML5的File api有哪些对象”,内容详细,步骤清晰,细节处理妥当,希望这篇“html5的File API有哪些对象”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起

本文小编为大家详细介绍“HTML5的File api有哪些对象”,内容详细,步骤清晰,细节处理妥当,希望这篇“html5的File API有哪些对象”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

File API包含如下对象。

 FileList接口。

它包含一组File对象,所以我们一般通过它来获取文件。有两种方式可以得到FileList对象:第一种是通过<input type="file">标签,

例如var fileList =document.getElementById('input-file').files可以获取选择的所有文件对象;

而Drag & Drop API的dataTransfer也包含一个FileList对象,在后面的例子中你将会看到如何通过这种方式来读取文件。

 Blob接口。

Blob(Binary Large Object)指二进制大对象,代表文件原始的二进制数据。

Blog接口的size属性表示二进制流的大小,type属性表示文件类型,而slice函数用来分割Blob对象。

 File接口。

它继承自Blob接口,描述FileList里的一个文件,包含了文件的只读信息。它的name属性表示文件名,lastModifiedDate属性表示文件的上次修改时间。

 FileReader接口。

它提供了方法来读取文件,还提供了获取读取数据的事件模型。

 FileError和FileException。

它们定义了File API使用中的错误和异常。

1. 以前的同类解决方案

在以前,javascript是不允许访问本地文件的。要实现文件上传这样的功能,必须借助于浏览器的特定插件,例如IE里的ActiveX或者Flash。

2. File API的优点

File API提供了多种WEB应用对本地文件的操作,并通过沙箱机制保证了操作的安全性。使用File API,我们的Web应用不需要再考虑所有浏览器的兼容性,代码的编写和维护变得更加容易。

3. 检测浏览器是否支持File API

判断当前浏览器是否支持File API的代码如下:

if(typeof window.FileReader === 'undefined'){

//此浏览器不支持File API

}

4. 读取文件函数

File API读取文件主要包括以下函数:

 readAsBinaryString(blob)。该函数接受一个Blob对象作为参数,通过二进制字符串形式读取文件内容。

 readAsText(blob)。该函数接受一个Blob对象作为参数,通过文本方式读取文件内容,默认采用UTF-8的编码方式。

 readAsDataURL(blob)。该函数接受一个Blob对象作为参数,通过加密的Data URL方式读取文件内容。Data URL协议由RFC2397定义,具体可以参考Http://www.ietf.org/rfc/rfc2397.txt。如果要直接在页面里显示图片,一般采用readAsDataURL读取图片内容,后面的示例采用了这种方式。

 readAsArrayBuffer(blob)。该函数接受一个Blob对象作为参数,并以ArrayBuffer对象的形式读取文件内容。

上面函数的参数也可以是File对象,因为File继承自Blob接口。

5. 一个简单实例

结合前面介绍过的拖放API,我们实现一个图片拖放并展示的简单示例,详细功能是从windows文件系统中拖放一幅图片文件到浏览器页面里,页面将会把这幅图片的边缘加上白色虚化效果并显示出来。

在这个示例里,我们将用到HTML5的File API和Drag & Drop API,以及css3的Mask特性。

这个实例的HTML和CSS代码如代码如下:

<div id="box"></div>

#box{

border: 2px gray dotted;

width: 171px;

height: 158px;

line-height: 158px;

text-align: center;

mask-image: url(mask.png);

-webkit-mask-image: url(mask.png);

mask-clip: content;

-webkit-mask-clip: content;

}

#box.hover{

border: 2px olive solid;

}

#box.drop{

border: 2px blue solid;

}

这个实例的JavaScript代码如下所示:

var box = document.getElementById('box');

//检测是否支持File API

if(typeof window.FileReader === 'undefined'){

alert('此浏览器不支持File API ');

}

box.ondraGover = function(event){ //将鼠标拖曳到容器上时

this.innerHTML = '可以拖曳到此处';

this.className = 'hover';

event.dataTransfer.dropEffect = "copy";

return false;

};

box.ondragleave = function(){ //移出时

this.innerHTML = '';

this.className = '';

return false;

}

box.ondragend = function(){ //拖曳结束时

this.className = '';

return false;

};

box.ondrop = function(event){ //拖曳进行中

this.innerHTML = '';

this.className = 'drop';

var file = event.dataTransfer.files[0]; //通过Drag & Drop API的dataTransfer获取

//文件对象

var reader = new FileReader();

reader.onload = function (event){ //读取成功后

box.style.background = 'url(' + event.target.result + ') no-repeat center';

//将读取到的图像内容设置为容器的背景

};

reader.onerror = function(event){ //读取失败的操作

alert(event.target.error.code);

}

reader.readAsDataURL(file); //用DataURL的方式读取文件

event.preventDefault();

};

拖放前的框、拖放中的框、拖放后的框效果如下图所示:

拖放时的实际效果表现为,当拖曳图片到框内时,边框变为橄榄色实线,框内文字显示“可以拖曳到此处”;再把图片拖曳出框外时,边框还原为最初的灰色虚线框,框内文字消失;将图片放置到框里后,边框变为蓝色实线框,图片的边缘呈现白色虚化效果。你可以将多幅图片拖曳到框内来查看它们经过边缘白色虚化处理后的效果图,非常方便实用。

可能犯的4个错误

(1) onerror事件参数处理错误

onerror事件接受的参数是event事件,而不是error对象,要获得错误信息,可以使用event.target.error.code,它有如下几种类型。

 NOT_FOUND_ERR(值为1,文件未找到的错误)

 SECURITY_ERR(值为2,安全权限的错误)

 ABORT_ERR(值为3,读取操作放弃的错误)

 NOT_READABLE_ERR(值为4,不可读的错误)

 ENcoding_ERR(值为5,编码错误)

(2) 在本地Web页面中调用File API

在本地Web页面中调用File API是无法读取到文件内容的,HTML5的安全机制对此进行了控制。在本地页面调用File API时,在FileReader的onerror事件中可以捕获到的错误码为2,对应上面提到的SECURITY_ERR,表示是文件安全权限导致的错误。

如果要自己动手编写File API的示例,必须记得将页面放在用Apache或者IIS等搭建的Web服务器上。

(3) 没有阻止浏览器默认行为

dragover和dragend事件都必须使用event.preventDefault或者return false的方式(熟悉JavaScript的朋友应该很了解这两者之间的差异)来阻止浏览器的默认行为。如果不采用这样的方式,拖放后浏览器将会打开并显示所拖曳的图片。

(4) 使用非WebKit内核浏览器打开示例页面

CSS3的Mask效果目前只能在WebKit内核浏览器中正常显示,其他现代浏览器可以支持图片拖放的相关功能,但是无法看到图片边缘的白色虚化效果。

读到这里,这篇“HTML5的File API有哪些对象”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网VUE频道。

--结束END--

本文标题: HTML5的File API有哪些对象

本文链接: https://www.lsjlt.com/news/92565.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • HTML5的File API有哪些对象
    本文小编为大家详细介绍“HTML5的File API有哪些对象”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML5的File API有哪些对象”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2024-04-02
  • javascript file对象有哪些方法
    这篇文章主要介绍“javascript file对象有哪些方法”,在日常操作中,相信很多人在javascript file对象有哪些方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • html5中有哪些api
    这篇文章主要介绍了html5中有哪些api,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 html5的api有:...
    99+
    2024-04-02
  • python中file对象的常用方法有哪些
    这篇文章主要讲解了“python中file对象的常用方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中file对象的常用方法有哪些”吧!open() 方法Python o...
    99+
    2023-06-02
  • HTML5中实用的API有哪些
    这篇文章主要为大家展示了“HTML5中实用的API有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5中实用的API有哪些”这篇文章吧。Element...
    99+
    2024-04-02
  • html5中canvas的绘图API有哪些
    这篇文章主要为大家展示了“html5中canvas的绘图API有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5中canvas的绘图API有哪些”这...
    99+
    2024-04-02
  • 有哪些强大的HTML5 API函数
    本篇内容介绍了“有哪些强大的HTML5 API函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1.&...
    99+
    2024-04-02
  • ADO.NET的对象有哪些
    这篇文章主要讲解了“ADO.NET的对象有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET的对象有哪些”吧!ADO.NET的对象五个主要的组件,分别是Connection对象...
    99+
    2023-06-17
  • HTML5中有哪些简单实用的API
    本篇内容主要讲解“HTML5中有哪些简单实用的API”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5中有哪些简单实用的API”吧!一、全屏API接口强大...
    99+
    2024-04-02
  • Javascript有哪些对象
    小编给大家分享一下Javascript有哪些对象,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript 对象Java...
    99+
    2024-04-02
  • Guestbook对象有哪些
    本篇内容介绍了“Guestbook对象有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!留言对象。类名:com.jspxcms.ext.d...
    99+
    2023-06-26
  • ADO.NET对象有哪些
    本篇内容主要讲解“ADO.NET对象有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ADO.NET对象有哪些”吧!ADO.NET是Microsoft数据库访问的一种新技术,它支持连接式访问和...
    99+
    2023-06-17
  • jquery有哪些对象
    jQuery是一种流行的JavaScript库,它简化了HTML文档遍历、事件处理、动画效果和AJAX等常见的网页开发任务。在使用jQuery时,我们需要熟悉一些重要的对象和功能。本文将介绍jQuery的主要对象,帮助大家更好地使用和理解j...
    99+
    2023-05-18
  • javascript中有file对象吗
    这篇文章主要介绍“javascript中有file对象吗”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript中有file对象吗”文章能帮助大家解决问题...
    99+
    2024-04-02
  • html5中有哪些视频API接口
    今天就跟大家聊聊有关html5中有哪些视频API接口,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、虽然有的属性是boolean类型,但仍旧建议按照XHTML书写(属性名=”属性值...
    99+
    2023-06-09
  • jquery对象和js对象的区别有哪些
    本篇内容主要讲解“jquery对象和js对象的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery对象和js对象的区别有哪些”吧! ...
    99+
    2024-04-02
  • java对象池有哪些
    java中的对象池有:1.SoftReferenceObjectPool;2.StackObjectPool;3.GenericObjectPool;4.GenericKeyedObjectPool;java中的对象池有以下几种SoftRe...
    99+
    2024-04-02
  • javascript中对象有哪些
    这篇文章将为大家详细讲解有关javascript中对象有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript有什么特点1、js属于一种解释性脚本语言;2、在绝大多数浏览器的...
    99+
    2023-06-14
  • List对象的比对方法有哪些
    这篇文章将为大家详细讲解有关List对象的比对方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求说明我们在开发过程中,经常需要对比两个List对象的数据,找出新增、删除、更改的条目。典型的情况如...
    99+
    2023-06-03
  • javascript支持的对象有哪些
    本篇内容主要讲解“javascript支持的对象有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript支持的对象有哪些”吧! ...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作