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用@font-face实现自定义英文字体
Sep 23 HTML / CSS
CSS3 Media Queries详细介绍和使用实例
May 08 HTML / CSS
使用CSS3中的calc()属性来以算式表达尺寸数值
Jun 06 HTML / CSS
详解CSS3浏览器兼容
Dec 14 HTML / CSS
HTML5 Canvas绘制圆点虚线实例
Jan 01 HTML / CSS
使用html5 canvas 画时钟代码实例分享
Nov 11 HTML / CSS
使用HTML5 Canvas API绘制弧线的教程
Mar 22 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
Aug 20 HTML / CSS
纯CSS实现hover图片pop-out弹出效果的实例代码
Apr 16 HTML / CSS
html form表单基础入门案例讲解
Jul 15 HTML / CSS
CSS三大特性继承性、层叠性和优先级详解
Jan 18 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 extract 将数组拆分成多个变量的函数
2010/06/30 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
location.hash保存页面状态的技巧
2016/04/28 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
如何理解python中数字列表
2020/05/29 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
建筑工地标语
2014/06/18 职场文书
初婚未育证明样本
2015/06/18 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
Python内置的数据类型及使用方法
2022/04/13 Python