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 相关文章推荐
25个CSS3动画按钮和菜单教程分享
Oct 03 HTML / CSS
基于css3实现漂亮便签样式
Mar 18 HTML / CSS
纯css3实现图片翻牌特效
Mar 10 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
Oct 19 HTML / CSS
浅谈CSS3鼠标移入图片动态提示效果(transform)
Nov 06 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
Mar 25 HTML / CSS
使用分层画布来优化HTML5渲染的教程
May 08 HTML / CSS
html5.2 dialog简介详解
Feb 27 HTML / CSS
基于HTML5 WebGL的3D机房的示例
Mar 16 HTML / CSS
解决HTML5中滚动到底部的事件问题
Aug 22 HTML / CSS
html5 canvas手势解锁源码分享
Jan 07 HTML / CSS
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
Dec 24 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
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
php中session退出登陆问题
2014/02/27 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python群发邮件实例代码
2014/01/03 Python
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
学院书画协会部门职责
2013/11/28 职场文书
卫生标语大全
2014/06/21 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL