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实现字体颜色渐变的实现
Mar 09 HTML / CSS
目前不被任何主流浏览器支持的CSS3属性汇总
Jul 21 HTML / CSS
浅析与CSS3的loading动画加载相关的transition优化
May 18 HTML / CSS
CSS3弹性盒模型开发笔记(二)
Apr 26 HTML / CSS
css 元素选择器的简单实例
May 23 HTML / CSS
浅析CSS3 中的 transition,transform,translate之间区别和作用
Mar 26 HTML / CSS
Html5移动端弹幕动画实现示例代码
Aug 27 HTML / CSS
HTML5边玩边学(3)像素和颜色
Sep 21 HTML / CSS
html5图片上传预览示例分享
Apr 14 HTML / CSS
配置H5的滚动条样式的示例代码
Mar 09 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
Apr 07 HTML / CSS
CSS3 制作的悬停缩放特效
Apr 13 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 iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
Using the TextRange Object
2006/10/14 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
Python continue语句用法实例
2014/03/11 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
快速查询Python文档方法分享
2017/12/27 Python
python队列queue模块详解
2018/04/27 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
Django Rest framework权限的详细用法
2019/07/25 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
建房协议书
2014/04/11 职场文书
岗位安全生产责任书
2014/07/28 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
社区综治工作汇报
2014/10/27 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
php去除deprecated的实例方法
2021/11/17 PHP
python​格式化字符串
2022/04/20 Python
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js