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实现文本框的清除按钮相关的一些效果
Jun 23 HTML / CSS
浅谈CSS3中的变形功能-transform功能
Dec 27 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
Jan 17 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
Jun 21 HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
Jan 07 HTML / CSS
HTML5 Canvas锯齿图代码实例
Apr 10 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
Nov 18 HTML / CSS
字中字效果的实现【html5实例】
May 03 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
Feb 18 HTML / CSS
解析浏览器的一些“滚动”行为鉴赏
Sep 16 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
Sep 16 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
Sep 16 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
将OICQ数据转成MYSQL数据
2006/10/09 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
python入门教程之基本算术运算符
2020/11/13 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
行政管理专业推荐信
2013/11/02 职场文书
中专毕业生的自我鉴定
2013/12/01 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
安全生产月活动总结
2014/05/04 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
安全例会汇报材料
2014/08/23 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
个人委托书如何写
2014/09/25 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书