HTML5 实现一个访问本地文件的实例


Posted in HTML / CSS onDecember 13, 2012

在前面的几篇文章里,我向大家共享了几个HTML5的例子,分别是拖拽功能演示,页面内容可编辑化演示 和 本地存储功能演示。 今天,我将向大家分享一个简单的应用,用来演示使用FileReader的方法, FileReader是HTML5里提供的一个文件操作API。

当你在看我前面所写的HTML 5例子时,我正在思考创建一个简单但又适用的例子、以一种更新奇的方式来演练这些HTML5新特性。我的目标并不是想单纯的展示这些HTML 5 API,而是想用例子来告诉开发人员如何真正的以一种实用的和创新的方式实现这些API。

在HTML5里,从Web网页上访问本地文件系统变的十分的简单,那就是使用File API。这个File规范说明里提供了一个API来表现Web应用里的文件对象,你可以通过编程来选择它们,访问它们的信息。这个File API包括:
一个FileList序列,代表着由本地系统里选中的单个的文件组成的数组。用来选择文件的用户接口可以通过<input type=”file”>调用实现。
一个Blob接口,它代表原始二进制数据,通过Blob对象你可以访问里面的字节数据。
一个File接口,它里面存有文件的只读属性信息,像文件名,文件类型,文件数据访问的地址。
一个FileReader接口,它提供了读取一个文件的方法,和一个获取文件读取结果的事件模型。
一个FileError接口和一个FileException对象,它们用来定义这个规范中的错误产生条件。
如何使用这个例子:在这个例子中,我给出了一个画板,你可以从本地文件系统里拖拽进去一个图片,或者你也可以用文件选择框来选择图片。例子中,请只选择图片文件,我并没有添加文件过滤和文件类型检查。请记住,没有一个浏览器完全实现了HTML5,这个例子需要在支持HTML5的浏览器上运行,比如Firefox3.5以上。 

实现File API的主要方法非常的简单,就像下面

复制代码
代码如下:

function imagesSelected(myFiles) {
for (var i = 0, f; f = myFiles[i]; i++) {
var imageReader = new FileReader();
imageReader.onload = (function(aFile) {
return function(e) {
var span = document.createElement(‘span‘);
span.innerHTML = ['<img class="images" src="', e.target.result,'" title="', aFile.name, '"/>'].join(”);
document.getElementById(‘thumbs’).insertBefore(span, null);
};
})(f);
imageReader.readAsDataURL(f);
}
}
function dropIt(e) {
imagesSelected(e.dataTransfer.files);
e.stopPropagation();
e.preventDefault();
}

我选择在<td>上放置我的ondrop事件:
复制代码
代码如下:

<td align=”left” height=”105″ ondragenter=”return false” ondragover=”return false” ondrop=”dropIt(event)”>
<output id=”thumbs”></output>
</td>

这个例子中,我只是拖拽本地文件到画板里。然而我想它能向你表明File API的简单但强大的能力
HTML / CSS 相关文章推荐
css3实例教程 一款纯css3实现的发光屏幕旋转特效
Dec 07 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
Apr 26 HTML / CSS
CSS3实现多重边框的方法总结
May 31 HTML / CSS
纯CSS3实现鼠标滑过按钮动画第二节
Jul 16 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
Feb 08 HTML / CSS
Canvas 文本转粒子效果的实现代码
Feb 14 HTML / CSS
html5 http的轮询和Websocket原理
Oct 19 HTML / CSS
HTML5超炫酷粒子效果的进度条的实现示例
Aug 23 HTML / CSS
详解HTML5常用的语义化标签
Sep 27 HTML / CSS
CSS+HTML 实现顶部导航栏功能
Aug 30 HTML / CSS
css布局巧妙技巧之css三角示例的运用
Mar 16 HTML / CSS
使用CSS实现按钮边缘跑马灯动画
May 07 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
Dec 13 #HTML / CSS
一张图片能隐含千言万语之隐藏你的程序代码
Dec 13 #HTML / CSS
HTML5 新旧语法标记对我们有什么好处
Dec 13 #HTML / CSS
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
Dec 13 #HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
Dec 09 #HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
Dec 09 #HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
Dec 07 #HTML / CSS
You might like
PHP中的命名空间详细介绍
2015/07/02 PHP
PHP处理会话函数大总结
2015/08/05 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
PHP 实现重载
2021/03/09 PHP
jQuery 使用手册(七)
2009/09/23 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
学期自我鉴定范文
2013/10/01 职场文书
应届毕业生求职信范文
2013/12/18 职场文书
正科级干部考察材料
2014/05/29 职场文书
八项规定对照检查材料
2014/08/31 职场文书
简易版租房协议书范本
2014/10/13 职场文书
见习报告的格式
2014/11/04 职场文书
2014年招生工作总结
2014/11/26 职场文书
公司经营目标责任书
2015/01/29 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB