• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > HTML5 FileAPI图文代码分享

HTML5 FileAPI图文代码分享

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5 ,FileAPI等相关知识,匿名希望在学习及工作中可以帮助到您
在HTML5中,提供了一个关于文件操作的API,通过这个API,对于从web页面上访问本地文件系统的相关处理变得十分简单。到目前为止只有部分浏览器对它提供支持。

1.FileList对象和File对象

  FileList对象表示用户选择的文件列表,在HTML4中file控件内只允许放置一个文件,但在HTML5中通过添加multiple属性,file控件内允许放置多个文件。控件内的每一个用户选择的文件都是一个file对象,而FileList就是这些file对象的列表,代表用户选择的所有文件。file对象有两个属性,一个是name,代表文件名不包含文件的路径;一个是lastModifiedDate,表示文件最后被修改的日期。

<!DOCTYPE html>
<html>
    <head>
        <meta charset='UTF-8'/>
        <title>FileList and File </title>
        <script type="text/javascript" language="JavaScript">
function showFiles(){
var file,
                len = document.getElementById('file').files.length;//返回FileList文件列表对象
for (var i=0; i < len; i++) {
                  file = document.getElementById('file').files[i];
                  alert(file.name);
                };
                
            }            
</script>               
    </head>
    <body>
        <input type="file" id='file' multiple="multiple" width="80px"/>
        <input type="button" id="bt1" value="click" onclick="showFiles();"/>
    </body>
</html>

2.Blob对象

  提到Blob对象,估计有人会想起OracleDB中Blob字段,意义上有些类似。HTML5中Blob表示二进制原始数据,它提供一个slice()方法,可以通过这个方法访问到字节内部的原始数据块。事实上,上面提到的file对象继承了Blob对象。

  Blob对象的两个属性,size:表示一个对象的字节长度。type:表示一个对象的MIME类型,如若是未知类型返回空字符串。

function showFileInfo(){
                var file = document.getElementById('file').files[0];
                var size = document.getElementById('fileType');
                var type = document.getElementById('fileSize');
                size.innerHTML = file.size;
                type.innerHTML = file.type;
            }

  对于图像类型的文件,Blob对象的type属性都是以image/开头,可以利用这个特性对用户选择的文件类型做判断。

function showFileInfo(){
                var file = document.getElementById('file').files[0];
                if(checkImage(file)){
                var size = document.getElementById('fileType');
                var type = document.getElementById('fileSize');
                size.innerHTML = file.size;
                type.innerHTML = file.type;
                }
                else{
                    return ;
                }
            }
            function checkImage(file){
                if(!/img\/\w+/.test(file.type)){
                    alert(file.name + "不是图片");
                    return false;
                }
                return true;
            }

  另外,file控件在HTML5标准中添加了accept属性,用来限制接受的文件类型,但目前各浏览器对齐支持都仅限于在打开文件选择窗口时默认的选择图像文件而已,如果选择其他类型,控件也能接受。

3.FileReader接口

  3.1接口方法

  FileReader接口提供了四个方法,其中3个用来读取文件,1个用来中断文件的读取。

方法名  参数描述
readAsBinaryString()file将文件读取为二进制字符串,通常将它传到后端,后端可以通过这段字符串存储文件
readAsDataURL()file将文件读取为一段data url字符串,事实上是将小文件以一种特格式的URL地址直接读取到页面。小文件通常指图片与html等格式文件
readAsText()file [encoding]将文件以文本的方式读取,其中第二个参数为文本的编码。
abort()(none)中断读取操作。

需要注意的是,无论读取成功还是失败,方法都不会返回读取结果,结果返回在result属性中。

  3.2接口事件

  FileReader接口提供了一套完整的事件模型,用于捕获读取文件时的状态。

事件描述
onabort数据读取中断时发生
onerror数据读取出错时发生
onloadstart数据读取开始时发生
onload数据读取成功完成时发生
onloadend数据读取完成时发生无论读取成功还是失败
onprogess数据读取中

  3.3实例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
        <title>FileReader</title>
        <meta name="description" content="" />
        <meta name="viewport" content="width=device-width; initial-scale=1.0" />
        <script type="text/javascript" language="JavaScript">
var file ,
                result; 
function  myLoad() {
                 file = document.getElementById('file').files[0];
                 result = document.getElementById('result');
            }
if(typeof FileReader == 'undefined'){
                result.innerHTML = "你的浏览器不支持 FileReader";
                file.setAttribute("disabled","disabled");
            }
function readAsDataURL(){
if(!/image\/\w+/.test(file.type)){
                    alert(file.name + '不是一个图片类型的文件');
                }else{
var reader = new FileReader();
                    reader.readAsDataURL(file);
                    reader.onload = function(e){
                        
                        result.innerHTML = "<img src=" + reader.result +"/>";
                    };
                }
            }
function readAsBinaryString(){
var reader = new FileReader();
                reader.readAsBinaryString(file);
                reader.onload = function(e){                    
                    result.innerHTML = reader.result;
                };
            }
function readAsText(){
var reader = new FileReader();
                reader.readAsText(file);
                reader.onload=function(e){                                       
                    result.innerHTML = reader.result;
                };
            }
</script>

    </head>
    <body onload="myLoad();">
        <p>
            <input type="file" id='file'/>
            <input type='button' id="bt_DataURL" value="读取图片" onclick="readAsDataURL();"/>
            <input type="button" id="bt_BinaryString" value="读取二进制字符串" onclick="readAsBinaryString();"/>
            <input type="button" id="bt_textString" value="读取文本信息" onclick="readAsText();"/>
        </p>   
        <div id="result">
            
        </div>
    </body>
</html>

以上就是HTML5 FileAPI图文代码分享的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

  • HTML5的本地存储
  • Define charset for HTML5 Doctype
  • HTML5 canvas如何绘制动态径向渐变
  • 如何使用HTML5 Canvas绘制动态线性渐变
  • HTML5 canvas如何实现马赛克的淡入淡出效果(代码)
  • HTML5 canvas中如何绘制图像
  • 如何使用HTML5 canvas实现图像的马赛克
  • html5 canvas实现简单的双缓冲
  • HTML5 Canvas 图形组合是如何实现的?附代码
  • HTML5 figure标签是什么意思?HTML5 figure标签的使用方法详解

相关文章

  • 2018-12-03使用HTML5/CSS3五步快速制作便签贴特效代码示例分享(图文)
  • 2018-12-03html5中返回音视频的当前媒体控制器的属性controller
  • 2018-12-03详解HTML5的限制验证
  • 2018-12-03css3+javascript怎么做一个旋转的3d盒子?
  • 2018-12-03canvas可以替代html与css了吗?
  • 2018-12-03使用 HTML5 IndexedDB API
  • 2018-12-03在h5里手机端页面缩放应该如何实现
  • 2018-12-03HTML5 Canvas中绘制椭圆的4种方法_html5教程技巧
  • 2018-12-03HTML5-关于表单使用的代码实例总结
  • 2018-12-03CSS3混合模式使用详解

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5学习笔记(一)-认识HTML5
    • Html5文件异步上传功能的实现
    • CSS 的主要缺陷是什么?
    • HTML5/CSS3 经典案例-无插件拖拽上传图片(一)
    • HTML5中classList属性
    • HTML5第一人称射击游戏实现的代码分享
    • 浅谈Html5中视频 音频标签 进度条的问题
    • 移动端meta行的汇总
    • HTML5 video标签(播放器)学习笔记(一):使用入门
    • HTML5的深入了解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有