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 渐变(Gradients)之CSS3 线性渐变
Jul 08 HTML / CSS
CSS3动画效果回调处理详解
Dec 10 HTML / CSS
canvas像素画板的实现代码
Nov 21 HTML / CSS
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
Jan 30 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
Jan 31 HTML / CSS
HTML5 Canvas绘制圆点虚线实例
Jan 01 HTML / CSS
HTML5 Canvas中绘制椭圆的4种方法
Apr 24 HTML / CSS
多视角3D可旋转的HTML5 Logo动画
Mar 02 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
Jan 29 HTML / CSS
HTML5 3D旋转相册的实现示例
Dec 03 HTML / CSS
AmazeUI导航的示例代码
Aug 14 HTML / CSS
CSS中理解层叠性及权重如何分配
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
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
php验证手机号码
2015/11/11 PHP
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
vue中appear的用法
2017/08/17 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
培训主管的岗位职责
2013/11/23 职场文书
员工评语大全
2014/01/19 职场文书
活动策划邀请函
2014/02/06 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
学校会议通知范文
2015/04/15 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
PyQt5实现多张图片显示并滚动
2021/06/11 Python
CSS3实现指纹特效代码
2022/03/17 HTML / CSS
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers