zoukankan      html  css  js  c++  java
  • HTML5 FileReader接口学习笔记

    1、FileReader概述

    FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 FileBlob 对象指定要读取的文件或数据。

    其中File对象可以是来自用户在一个<input>元素上选择文件后返回的FileList对象,也可以来自拖放操作生成的DataTransfer对象,还可以是来自在一个HTMLCanvasElement上执行mozGetAsFile()方法后返回结果

    2、FileReader接口方法

    方法名 参数 描述
    readAsBinaryString file 将文件读取为二进制码
    readAsText file,[encoding] 将文件读取为文本
    readAsDataURL file 将文件读取为DataURL
    readAsArrayBuffer file 将文件读取为ArrayBuffer对象
    abort (none) 中断读取操作

    3、FileReader接口事件

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

    4、使用实例

    <!DOCTYPE html>
    <html lang="zh-cn">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>Html5Test</title>
    </head>
    <body>
        <article>
            <header></header>
            <section>
                <p>
                    <lable>请选择一个文件:</lable>
                    <input type="file" id="file_reader">
                    <input type="button" value="读取图像" οnclick="readAsDataUrl();">
                    <input type="button" value="读取二进制数据" οnclick="readAsBinaryString();">
                    <input type="button" value="读取文本文件" οnclick="readAsText();">
                </p>
                <div id="file_reader_result" name="file_reader_result">
                    <!-- 这里用来显示读取结果 -->
                </div>
                <script>
                var file_reader_result = document.getElementById("file_reader_result");
                // 检测浏览器是否支持FileReader
                if (typeof FileReader == "undefined") {
                    file_reader_result.innerHTML = "您的浏览器不支持FileReader";
                    file.setAttribute('disabled', 'disabled');
                }
                // 将文件以Data Url形式读入页面
                function readAsDataUrl(){
                    // 检查是否为图像文件
                    var f = document.getElementById("file_reader").files[0];
                    if (!/image/w+/.test(f.type)) {
                        file_reader_result.innerHTML = "请上传图片文件!";
                        return false;
                    };
                    var reader = new FileReader();
                    // 将文件以Data Url形式读入页面
                    reader.readAsDataURL(f);
                    reader.onload = function(e){
                        file_reader_result.innerHTML = '<img src="' + this.result + '" alt="图片" />';
                    }
                }
                // 将文件以二进制形式读入页面
                function readAsBinaryString(){
                    // 检查是否为图像文件
                    var f = document.getElementById("file_reader").files[0];
                    if (!/image/w+/.test(f.type)) {
                        file_reader_result.innerHTML = "请上传图片文件!";
                        return false;
                    };
                    var reader = new FileReader();
                    // 将文件以二进制形式读入页面
                    reader.readAsBinaryString(f);
                    reader.onload = function(e){
                        file_reader_result.innerHTML = this.result;
                    }
                }
                // 将文件以文本形式读入页面 目前测试仅支持txt文件
                function readAsText(){
                    // 检查是否是文本文件
                    var f = document.getElementById("file_reader").files[0];
                    if (!/text/w+/.test(f.type)) {
                        file_reader_result.innerHTML = "请上传文本文件!";
                        return false;
                    };
                    var reader = new FileReader();
                    // 将文件以文本形式读入页面
                    reader.readAsText(f);
                    reader.onload = function(e){
                        file_reader_result.innerHTML = this.result;
                    }
                }
                </script>
            </section>
        </article>
    </body>
    </html>
    

     更多参考内容详见:MDN FileReader

    转载于:https://www.cnblogs.com/tinyTea/p/6529652.html

  • 相关阅读:
    MT7601 AP模式移植
    dhcp server 移植记录
    MT7601 WG209模块驱动移植,并连接路由器
    git 忽略文件
    关于中文--Unicode之间互相转换流程的说明
    将文字拆成拼音得到首字母(返回多音字)
    Javascript 汉字转首字母的拼音 js文件(支持多音字的选择)
    如何使用netstat –ano|findstr “port”命令?
    notepad++如何修改主题
    Notepad++ 更换主题
  • 原文地址:https://www.cnblogs.com/twodog/p/12141099.html
Copyright © 2011-2022 走看看